【发布时间】:2020-01-05 02:03:48
【问题描述】:
为什么 list_display 中的 @property 定义可见,但对于 Django Admin 而不是 field_sets 或 list_filter?
例如。在下面的示例中,my_prop 在管理员中完美显示为 list_display 字段,但不是 field_set 中的字段
models.py:
class MyModel (models.Model):
// code
@property my_prop(self):
// code
admin.py:
@admin.register(MyModel):
class MyModelAdmin(AdminModel):
list_display=('my_prop',)
fieldsets = ( ('Summary',{ 'fields':('myprop',) }))
编辑
感谢Iain Shelvington,他解释说@property 在Django Admin 中显示为readonly_field 要求。
进一步更新了一个真实世界的例子,说明在我的例子中@property 是如何构建的。欢迎提出关于如何过滤这个等同于 Django Admin 中的 list_filter 字段的想法!
closure_datetime = models.DateTimeField()
@property
def my_prop(self):
if self.closure_datetime :
return True
else:
return False
【问题讨论】:
-
您需要将
myprop添加到MyModelAdmin.readonly_fields- docs.djangoproject.com/en/3.0/ref/contrib/admin/… -
谢谢,这似乎适用于我对
list_display的测试,但奇怪的是不适用于list_filter。你知道为什么会这样吗? -
list_filter通常用于可以通过查询过滤的模型字段。如果您举例说明如何生成my_prop,也许我可以建议一种过滤它的方法 -
closure_datetime必须可以为空?否则my_prop将始终返回True
标签: django django-models django-admin