我添加了一个布尔字段,计算时间如下:
def is_active(self):
if self.inactive_to and self.available_until:
if datetime.date.today()>=self.inactive_to and datetime.date.today()<=self.available_until:
return True
else:
return False
elif self.inactive_to:
if datetime.date.today()>=self.inactive_to:
return True
else:
return False
elif self.available_until:
if datetime.date.today()<=self.available_until:
return True
else:
return False
else:
return True
is_active.short_description = 'Available'
is_active.boolean = True
但如果我尝试将其添加到“list_filter”,我会收到错误“'RealtyAdmin.list_filter [0]'指的是'is_active',它不引用字段。”
我可以避免它,或者添加将自动计算的模型fild吗?
答案 0 :(得分:2)
admin不是从django.db.models.fields继承的字段。
这就是'is_active' which does not refer to a Field."
所说的......
答案 1 :(得分:2)
我不够专心,这里https://docs.djangoproject.com/en/1.5/ref/contrib/admin/描述了如何添加自己的过滤器(从1.4开始)
答案 2 :(得分:0)
听起来好像让您感到困惑list_display
和list_filter
。您的代码用于在list_display
中添加新列,但您的标题和错误消息引用list_filter
。
答案 3 :(得分:0)
Django ORM找不到名为is_active
的数据库字段,因为它是一个python函数。 Django管理员不能通过python函数返回结果进行排序或过滤。
但是,正如您所说,您可以在模型中添加包含所需值的字段,然后将其添加到list_filter
。