Django 4.1.2数据库字段过滤报NameError问题排查
问题原因与解决方法
你遇到的NameError是因为Django ORM查询语法使用错误:直接在filter()里用es_date>timezone.now()这种Python原生比较方式时,Python会把es_date当成当前环境里的普通变量,而非Activities模型的字段——你显然没定义过这个变量,所以触发了未定义错误。
Django ORM有专属的字段查询规则,要实现“大于”的过滤逻辑,需要用双下划线拼接的查询后缀__gt,正确写法应为:
Activities.objects.filter(es_date__gt=timezone.now())
至于.objects.all()和.objects.get(id=1)能正常运行,是因为这两个方法不需要在参数里引用模型字段,不会触发变量解析的问题。
内容的提问来源于stack exchange,提问作者Pali775
相关产品推荐
相关产品推荐

