Django筛选器无法正常使用自定义添加的字段

2024-06-26 01:32:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经在django项目中创建了一个django管理视图,其中包含list_display和使用list\u filter自定义创建的过滤器。(使用Django 1.11

问题:筛选器对“All”选择显示良好,但对值(“Yes”、“No”)则不显示。 单击过滤器值时会出现以下错误。在

django.core.exceptions.FieldError: Cannot resolve keyword 'IsWithinRange' into field. Choices are: date_created, id, predicted_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'

※没有过滤器,它工作正常。 关于这类问题有很多问题,但没有一个对我有效


Tags: djangonoself过滤器datereturnadminvalue