在Django模型中访问ForeignKey的__unicode__字段

时间:2013-12-12 18:16:55

标签: django unicode foreign-keys admin

我在模型的__unicode__中构建了一个有用的组合字符串,以识别Django中的单个记录。

然后我有另一个模型,它将第一个引用为外键。

对于我的第二个模型我想使用ForeignKey引用的第一个模型中的__unicode__字符串为第二个模型构造__unicode__字符串。

class Invoice(models.Model):
    supplier = models.ForeignKey(Supplier)
    amount = models.DecimalField("invoice total", max_digits=10, decimal_places=2)
    invoice_date = models.DateField("invoice date")
    def __unicode__(self):  # I want to reuse this string in class Charge
            return " ".join((
            unicode(self.supplier),
            self.invoice_date.strftime("%Y-%m-%d"),
            u"£",
            unicode(self.amount)
        ))

class Charge(models.Model):
    invoice = models.ForeignKey(Invoice)
    amount = models.DecimalField("amount charged to house", max_digits=10, decimal_places=2)
    description = models.CharField("item description", max_length=200, null=True, blank=True)
    def __unicode__(self):
            return " ".join((
            self.invoice.__unicode__, #How do I do this?
            unicode(self.amount),
            self.description,
        ))

第二个模型的 unicode 需要第一个模型的 unicode 而不再重新构建它。

我如何参考?我以为我只是把发票放在我的__unicode__中,它会引用索引的unicode字符串,但当然它会得到发票的整个实例。

1 个答案:

答案 0 :(得分:2)

return u'%s %s %s' % (self.invoice, self.amount, self.description)

unicode.__mod__()看到“%s”并在元素上调用unicode()