模型定义了__str__,如何访问primary_key值?

时间:2018-12-08 04:49:32

标签: python jinja2

我正在使用django和jinja2做一个Web应用程序。在我的models.py中,我的类定义了__str__函数,以便在引用该类的对象时返回友好的文本。

class MySystem (models.Model):
    system_id         = models.AutoField(primary_key=True),
    system_name       = models.CharField(max_length=100)
    parent_system     = models.ForeignKey('self', null=True, blank=True, on_delete=models.SET_NULL)
    def __str__(self):
        return "{} > {}".format(self.parent_system, self.system_name)

class Detail (models.Model):
    detail_id         = models.AutoField(primary_key=True)
    system_id         = models.ForeignKey(MySystem, on_delete=models.DO_NOTHING)
    title             = models.CharField(max_length=150)
    def __str__(self):
        return "{} > {}".format(self.system_id, self.title)

我有一个Detail对象,我想要它的系统ID。当我尝试访问主键时,它将返回字符串而不是ID。

<td> <a href="/base/system/{{detail.system_id}}" > {{ detail.system_id.system_name }} </a> </td>

我尝试了detail.system_id.system_id,它返回了django.db.models.fields.AutoField。我希望它返回链接的数字ID。

1 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案。我需要做的是detail.system_id.id

相关问题