如何在 Jinja2 中显示上下文对象的字符串表示形式?



我在模型上有一个属性:

@property
def model_name(self):
"""Return the model name."""
return self._meta.verbose_name

在 Django 模板中,我只需通过传递context['model_attr'] = self.model然后在模板中显示{{ model_attr.model_name }}来显示它。

但是在Jinja2中,这会导致<property object at 0x7f789aba52c0>。如何显示对象的str表示形式?

您需要在此处创建一个属性,例如通过在元类型中实现它:

from django.db import models
class NamedModelMeta(type(models.Model)):
@property
def model_name(cls):
"""Return the model name."""
return cls._meta.verbose_name

然后我们可以使用这个元类:

class MyModel(models.Model, metaclass=NamedModelMeta):
# …

最新更新