我在Django项目中使用 list_filter 创建了一个带有 list_display 的django管理视图和自定义创建的过滤器。 (使用 Django 1.11 )
问题:过滤器对“全部”选择显示正常,但对值不显示(“是”,“否”)。 单击过滤器值时会出现以下错误。
django.core.exceptions.FieldError:无法将关键字“IsWithinRange”解析为字段。选项包括:date_created,id,predict_result,user_question
代码如下:
class IsWithinRangeFilter(admin.SimpleListFilter):
title = 'Is Within Range'
parameter_name = 'IsWithinRange'
def lookups(self, request, model_admin):
return (
('Yes', 'Yes'),
('No', 'No'),
)
def queryset(self, request, queryset):
value = self.value()
logger.info('value :{}\n' .format(value))
if value == 'Yes':
return queryset.filter(IsWithinRange='Yes')
elif value == 'No':
return queryset.filter(IsWithinRange='No')
return queryset
class CoreLogAdmin(admin.ModelAdmin):
readonly_fields = ['date_created']
list_display = ('user_question', '_predicted_result', 'date_created', 'IsWithinRange')
list_filter = (IsWithinRangeFilter,) #without this system works fine
def IsWithinRange(self, row):
"""showing user questions only within score range (0.5~0.8)"""
...
score = <some value extract from row and then cast it to float value>
fscore = float(score)
if fscore >= 0.5 and fscore < 0.8:
return 'Yes'
else:
return 'No'
※没有过滤器它工作正常。 关于这类问题有很多问题,但是没有一个问题对我有用