django admin链接到反向关系对象

时间:2016-11-07 08:42:32

标签: django django-admin

我有以下型号:

class Invoice(models.Model):
    project = models.ForeignKey(
    Project,
    related_name = 'invoices'          
    )

假设我已经定义了Project模型。

现在在项目模型管理员我想添加一个链接,该链接会将我重定向到Invoice模型详细信息页面。我已经为Invoice模型定义了管理员。现在,我在Project模型的admin.py文件中编写了以下代码。

def invoice_link(self, obj):
    link = urlresolvers.reverse("admin:invoices_invoice_change", args=[
                                    obj.invoices_set.all()[0].id])
    return u'<a href="%s">%s</a>' % (link, obj.invoice.invoice_status)
invoice_link.short_description = 'Generate Invoice'
invoice_link.allow_tags = True 

但是我使用obj.invoices_set.all()[0].id获取相关发票对象的id时出现以下错误。

AttributeError at /admin/projects/project/
   'Project' object has no attribute 'invoices_set'

我肯定在这里犯了一个错误,但无法弄明白。如何获得反向关联对象的id

1 个答案:

答案 0 :(得分:0)

如果您未提供任何invoice_set,则会生成相关名称related_name。但在你的情况下,你明确给出了related_name。因此,您只需使用invoices代替invoice_set