我希望能够在模型中定义一个属性,该属性也可以使用“list_display”管理属性中的 admin_order_field 显示和排序。下面是我想要定义的属性的代码(并且可以在 django 管理界面中进行排序)
@property
def restaurant_name(self):
return str(self.restaurant)
restaurant_name.admin_order_field = 'restaurant__name'
但是,我收到以下错误消息:
AttributeError: 'property' object has no attribute 'admin_order_field'
当我摆脱@property装饰器时,它工作得很好,但是我必须在模型实例上调用restaurant_name(),而不是restaurant_name,这在我访问模型的不同属性的方式上提供了不一致的样式(这些属性是实际上定义为 Python 属性)。如何在管理中将 Python 属性指定为可排序?
最佳答案
您无法将属性分配给属性,就像错误消息告诉您的那样。您有两个选择 - 删除 @property 装饰器,或提供仅管理员使用的包装器。
@property
def restaurant_name(self):
return str(self.restaurant)
def restaurant_name_admin(self):
return self.restaurant_name
restaurant_name_admin.admin_order_field = 'restaurant__name'
关于django - 属性错误: 'property' object has no attribute 'admin_order_field' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17267802/