首页 > 解决方案 > Django模型过滤查询不识别字段

问题描述

我正在处理一个 Django 项目,过滤器查询功能没有按预期工作

我导入了模型,做了迁移我不明白代码哪里错了,它无法识别字段(评级)

我创建的模型

class Problem(models.Model):
    contestID = models.IntegerField()
    index = models.CharField(max_length=5)
    name = models.CharField(max_length=50)
    rating = models.IntegerField(default=0)
    link = models.URLField(max_length=200)
    tags = models.ManyToManyField(Tag,blank=True,related_name="Problme")

我在视图中的代码:( object.all() 工作正常,但过滤器不工作)

def fetchProblems(min = 0, max = 5000, filter = False):

    if not filter:
        problemSet = Problem.objects.all().values()
    else:
        problems = Problem.objects.filter(rating < max,rating > min)

        
    return problemSet

我的错误:(评级未定义)(基本上我尝试了所有未定义的字段)

NameError: name 'rating' is not defined

谢谢你的帮助

标签: python-3.xdjangodjango-modelsdjango-queryset

解决方案


正确的语法是

.filter(rating__gt=min)

您可以在https://docs.djangoproject.com/en/3.2/topics/db/queries/#field-lookups找到有关各种查找类型(由双下划线分隔)的更多信息


推荐阅读