我有以下课程
class Advert(models.Model):
...
title = models.TextField (
verbose_name = 'Job Title',
)
advertiser = models.TextField (
verbose_name = 'Advertiser',
)
first_advert = models.DateField (
verbose_name = 'First Advertised',
default = datetime.date.today
)
last_advert = models.DateField (
verbose_name = 'Last Advertised',
default = datetime.date.today
)
def posted_once(self):
return (self.last_advert == self.first_advert)
posted_once.short_description = 'Posted Once'
在admin.py中,我尝试使用posting_once作为过滤器
class AdvertAdmin(admin.ModelAdmin):
list_display = ['first_advert','last_advert',]
ordering = ['-last_advert','first_advert']
actions = [extract,]
list_filter = ('posted_once',)
但是我得到了
无法解析关键字" posting_once'进入现场
错误。请帮帮我。
答案 0 :(得分:1)
您不能将函数用作列表过滤器。
list_filter
应该是元素的列表或元组,其中每个元素应该是以下类型之一:
字段名称,其中指定的字段应为
BooleanField
,CharField
, {{1 ,DateField
,DateTimeField
,IntegerField
或 { {1}} 强>继承自
ForeignKey
的类,您需要提供ManyToManyField
和django.contrib.admin.SimpleListFilter
属性并覆盖title
和parameter_name
方法- 的类
一个元组,其中第一个元素是字段名称,第二个元素是继承自
lookups
因此,对于您的情况,您需要继承SimpleListFilter或FieldListFilter like the examples in the docs。