Python django筛选器在自定义添加字段中工作不正常
我在django项目中创建了一个带有list\u display的django管理视图,以及使用list\u filter自定义创建的过滤器。(使用Django 1.11) 问题:对于“全部”选择,筛选器显示良好,但对于值(“是”、“否”)显示不好。 单击过滤器值时会出现以下错误 django.core.exceptions.FieldError:无法将关键字“IsWithinRange”解析为字段。选项包括:创建日期、id、预测结果、用户问题 代码如下:Python django筛选器在自定义添加字段中工作不正常,python,django,python-3.x,django-admin,Python,Django,Python 3.x,Django Admin,我在django项目中创建了一个带有list\u display的django管理视图,以及使用list\u filter自定义创建的过滤器。(使用Django 1.11) 问题:对于“全部”选择,筛选器显示良好,但对于值(“是”、“否”)显示不好。 单击过滤器值时会出现以下错误 django.core.exceptions.FieldError:无法将关键字“IsWithinRange”解析为字段。选项包括:创建日期、id、预测结果、用户问题 代码如下: class IsWithinRange
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'
类是WithinRangeFilter(admin.SimpleListFilter):
标题='在范围内'
参数_name='IsWithinRange'
def查找(自我、请求、型号管理):
返回(
(‘是’、‘是’),
(‘否’、‘否’),
)
def查询集(自我、请求、查询集):
value=self.value()
logger.info('value:{}\n'.格式(value))
如果值=‘是’:
返回queryset.filter(IsWithinRange='Yes')
elif值==“否”:
返回queryset.filter(IsWithinRange='No')
返回查询集
类CoreLogAdmin(admin.ModelAdmin):
只读字段=['date\u created']
列表显示=(‘用户问题’、‘预测结果’、‘创建日期’、‘IsWithinRange’)
list_filter=(IsWithinRangeFilter,)#如果没有此系统,则工作正常
def在范围内(自身,行):
“”“仅显示分数范围(0.5~0.8)内的用户问题”
...
分数=
fscore=浮动(分数)
如果fscore>=0.5且fscore<0.8:
返回“是”
其他:
返回“否”
※没有过滤器,工作正常。
有许多问题与这类问题有关,但对我来说没有一个有效需要在
模型中定义def IsWithinRange
。Model
类而不是admin.ModelAdmin
类中定义吗?亨利:它不起作用。谢谢你的帮助