在模板django中呈现外键__str__方法

时间:2018-09-08 10:02:31

标签: django django-models django-templates

class A(models.Model):
   field1 = models.CharField(max_length=10)   
   field2 = models.IntegerField(default=0)

  def __str__(self):
    return self.field1 + str(self.field2)

class B(models.Model):
  a = models.ForeignKey(A)
  ...

现在在模板中,我想使用以下方式呈现模型B实例的“ a”属性: {{ binstance.a }},但这似乎要么显示空字符串,要么什么都不显示。

如何在模板中呈现外键的 str 方法?

2 个答案:

答案 0 :(得分:2)

实际上,这是默认的django行为。检查是否通过模板上下文传递B实例,并在模板中使用正确的变量名。

答案 1 :(得分:0)

也许我会选择其他方法并创建一个template tag

@register.filter(name='fullname')
def fullname(pk):
    b = B.objects.get(pk=pk)
    field1 = b.a.first_name
    field2 = b.a.last_name
    return "{} {}".format(field1, field2)

然后您可以使用{{binstance.pk|fullname}}