从另一个模型提供有关模型__unicode__的额外信息

时间:2014-03-27 13:22:12

标签: django models

我有两个控制战利品系统的模型。

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中找到但我无法到达那里。

1 个答案:

答案 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)