Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django筛选器在自定义添加字段中工作不正常_Python_Django_Python 3.x_Django Admin - Fatal编程技术网

Python django筛选器在自定义添加字段中工作不正常

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

我在django项目中创建了一个带有list\u display的django管理视图,以及使用list\u filter自定义创建的过滤器。(使用Django 1.11)

问题:对于“全部”选择,筛选器显示良好,但对于值(“是”、“否”)显示不好。 单击过滤器值时会出现以下错误

django.core.exceptions.FieldError:无法将关键字“IsWithinRange”解析为字段。选项包括:创建日期、id、预测结果、用户问题

代码如下:

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
类中定义吗?亨利:它不起作用。谢谢你的帮助