gpt4 book ai didi

python - 在多对多关系中查询

转载 作者:太空宇宙 更新时间:2023-11-03 14:26:18 24 4
gpt4 key购买 nike

我有两个具有 ManyToMany 关系的模型。这是代码:

class Player(models.Model):
SEX_CHOICES = (
('f', 'Female'),
('m', 'Male'),
)
tournaments = models.ManyToManyField('Tournament', through = "PlayerTournament",verbose_name = u"Tournament's players")
first_name = models.CharField(max_length = 30, verbose_name = u"First name")
last_name = models.CharField(max_length = 50, verbose_name = u"Last name")
sex = models.CharField(max_length = 1, choices = SEX_CHOICES, default = 'f', verbose_name = u"Sex")
elo = models.IntegerField(verbose_name = u"ELO")

class Meta:
ordering = ['elo']

def __unicode__(self):
return "%s - %s" % (self.last_name, self.first_name)

class Tournament(models.Model):
title = models.CharField(max_length = 100, verbose_name = u"Tournament's title")
players = models.ManyToManyField('Player', through = "PlayerTournament",verbose_name = u"Tournament's players")
beginning_date = models.DateTimeField(verbose_name = u"Tournament's beginning", null=True, blank = True)

def __unicode__(self):
return self.title

class PlayerTournament(models.Model):
player = models.ForeignKey(Tournament)
tournament = models.ForeignKey(Player)

class Meta:
db_table ='game_player_tournaments'
auto_created = Player

我正在尝试进行查询以获取相关字段

PlayerTournament.objects.filter(tournament__title = "Winter").values()

但是没用

FieldError: Cannot resolve keyword 'title' into field. Choices are: elo, first, first_name, id, last_name, playertournament, second, sex, statistics, tournament, tournaments

我做错了什么?

最佳答案

查看您的模型:

class PlayerTournament(models.Model):
player = models.ForeignKey(Tournament)
tournament = models.ForeignKey(Player)

你有 playertournament 互换

你应该这样做:

PlayerTournament.objects.filter(player__title = "Winter").values()

如果您确实正在寻找相关字段,您应该使用select_relatedprefetch_related而不是 values (根据您的查询,我对此深表怀疑)

关于python - 在多对多关系中查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19869123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com