我在模型上有一个属性:
@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):
# …