2013-12-12 80 views
2

我已经在模型的__unicode__中构造了一个有用的组合字符串来标识Django中的单个记录。在Django模型中访问ForeignKey的__unicode__字段

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

对于我的第二个模型我想从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字符串,但它当然会获取发票的整个实例。

+0

只要'self.invoice''__unicode__'就会被评估。 – karthikr

+0

这就是我希望的,但我得到一个错误说预期的字符串或unicode,发票发现 – rayjay

回答

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

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

+0

这样做 - 谢谢。出于兴趣,如果我想明确地调用一个在Class中被“def'd”的函数,我可以通过外键连接以某种方式调用它吗? – rayjay

+0

@ user3074252:是的,就像你总是调用方法一样。 –

+0

我使用django 1.6并得到:匹配查询不存在。我已经返回'%s'%(自己.) – Timo

相关问题