Python 具有关系的Django模型
我知道,这类问题在这里至少被问过很多次,但我是从django开始的,我很难应用类似问题的解决方案,把这些东西放在一起 我认为我的模型应该有3个等级:Python 具有关系的Django模型,python,django,foreign-keys,models,Python,Django,Foreign Keys,Models,我知道,这类问题在这里至少被问过很多次,但我是从django开始的,我很难应用类似问题的解决方案,把这些东西放在一起 我认为我的模型应该有3个等级: class Guild(models.Model): name = models.CharField(max_length=50) class Battle(models.Model): guild1 = models.ForeignKey(Guild, related_name="guild_one") guild2 =
class Guild(models.Model):
name = models.CharField(max_length=50)
class Battle(models.Model):
guild1 = models.ForeignKey(Guild, related_name="guild_one")
guild2 = models.ForeignKey(Guild, related_name="guild_two")
# tournament = models.ForeignKey(Tournament) ???
class Tournament(models.Model):
name = models.CharField(max_length=50)
????
战斗
是两个行会之间的战争
,发生在锦标赛
期间。在锦标赛中可以有许多战役
。一个公会
可以参加多个锦标赛
我希望能够通过公会搜索(查看他们的每一场战斗,从他们参加的每一场比赛中),通过比赛查看已经进行了哪些战斗,并且我希望能够通过比赛访问,查看哪些公会曾经参加过。上面的代码(加上我推荐的那行代码)行得通吗,因为我觉得也许锦标赛类应该参考Battle
另外,如果您可以给出一个查询示例,该查询将获取参与给定锦标赛的所有协会的名称 modelBattle
是拥有锦标赛外键的好地方,因此您可以删除注释,尽管您应该使用引号来引用锦标赛,因为它是在Battle
之后声明的,即models.ForeignKey(“锦标赛”)
要以列表格式获取所有参与公会的名称,请使用guild
对象的guild\u one
和guild\u two
,以及。像这样:
>>> from django.db.models import Q
>>> Guild.objects.filter(Q(guild_one__tournament=t) |\
... Q(guild_two__tournament=t)).values_list('name', flat=True)
[u'red', u'blue', u'green', u'black']
假设t
引用了一些锦标赛
模型Battle
是拥有锦标赛外键的好地方,因此您可以删除注释,尽管您应该使用引号引用锦标赛
,因为它是在Battle
之后声明的,例如,型号。外键(“锦标赛”)
要以列表格式获取所有参与公会的名称,请使用guild
对象的guild\u one
和guild\u two
,以及。像这样:
>>> from django.db.models import Q
>>> Guild.objects.filter(Q(guild_one__tournament=t) |\
... Q(guild_two__tournament=t)).values_list('name', flat=True)
[u'red', u'blue', u'green', u'black']
假设t
引用了一些锦标赛
非常流畅,谢谢!我还试图获得所有曾与某个特定公会斗争过的公会的名称。换句话说,公会和公会本身的所有对手。我对其进行了编码,但我只获取公会ID而不是名称:Battle.objects.filter(Q(guild1=g)| Q(guild2=g)).values\u list('guild1','guild2').distinct()
。你能提个建议吗?非常好,谢谢!我还试图获得所有曾与某个特定公会斗争过的公会的名称。换句话说,公会和公会本身的所有对手。我对其进行了编码,但我只获取公会ID而不是名称:Battle.objects.filter(Q(guild1=g)| Q(guild2=g)).values\u list('guild1','guild2').distinct()
。你能提个建议吗?