我有两个控制战利品系统的模型。
class Boss(models.Model):
name = models.CharField(max_length=255)
instance = models.CharField(max_length=255)
difficulty = models.ForeignKey(Difficulty)
loot_table = models.ManyToManyField(Loot)
class Loot(models.Model):
wh_item_id = models.CharField(verbose_name="Wowhead Item ID", max_length=255)
wh_item_name = models.CharField(verbose_name="Wowhead Item Name", max_length=255)
gear_type = models.CharField(max_length=255, blank=True, null=True)
lockout_tier = models.IntegerField(blank=True, null=True)
def __unicode__(self):
return u'%s [%s]' % (self.wh_item_name, self.wh_item_id)
在Loot模型中,我将返回wh_item_name和wh_item_id,但我需要它返回的是Loot.wh_item_name和[Boss.difficulty]。
但是看着这个我没有最微弱的线索从哪里开始,我已经尝试过滤老板模型,其中Loot在loot_table中找到但我无法到达那里。
答案 0 :(得分:0)
不确定您的型号是否正确。 Boss和Loot之间有多对多关系,顾名思义每个Loot都有多个老板。所以" boss.difficulty"没有单一价值,但可能有几个。
如果这是你想要的,你可以简单地连接它们:
', '.join(self.boss_set.values_list('difficulty', flat=True)
但我怀疑你真正想要的是从Loot到Boss的ForeignKey,这意味着每个Loot只有一个Boss,所以你只需输出self.boss.difficulty
。
修改强>
def __unicode__(self):
difficulties = ', '.join(self.boss_set.values_list('difficulty', flat=True)
return u'%s [%s]' % (self.wh_item_name, difficulties)