django - 属性错误: 'property' object has no attribute 'admin_order_field'

标签 django django-admin

我希望能够在模型中定义一个属性,该属性也可以使用“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/

相关文章:

django - 应用程序不会出现在 django admin 中

python - 更改 `wsgi.py` 后,Django-Rest-Framework 无法加载样式和脚本

django - 覆盖 Django 管理模板时如何访问模型数据?

python - 在 For 循环中获取属性名称

python - Django 递归注解

django - 如何在Django Admin中将user.is_staff默认设置为True?

Django-管理员中的UserProfile m2m字段-错误

python - 忽略/跳过 python bandit 安全问题报告中的某些问题的方法是什么?

python - 我需要查询一组主键包含在列表中的对象

javascript - Django json.loads(request.body) 给出错误 Expecting value : line 1 column 1