【问题标题】:Django model is present, says not defined when running codeDjango 模型存在,运行代码时未定义
【发布时间】:2016-11-08 05:49:09
【问题描述】:

我有以下型号:

class Basestationreport(models.Model):
    ...
    gpstimeanddate = models.DateTimeField(db_column='GPSTimeAndDate')  # Field name made lowercase.
    ...

和代码:

from .models import Basestationreport

@login_required(login_url="login/")
def getbasestationsbetween(request):
    fromdate = request.POST.get('from')
    todate = request.POST.get('to')
    result = Basestationreport.objects.filter(gpstimeanddate > datetime.date(2005, 1, 1))
    return HttpResponse(json.dumps(request.POST), content_type="application/json")

我得到的错误是:

NameError:名称“gpstimeanddate”未定义。

我使用此表中其他字段的其他函数工作正常。我错过了什么吗?

【问题讨论】:

    标签: python django


    【解决方案1】:

    错误是因为它正在寻找一个名为 gpstimeanddate 的局部变量,您显然没有定义,也没有尝试使用。

    由于您尝试将其用作过滤结果的字段,因此您需要将其用作 fiter 中的关键字,并使用 __gt

    .filter(gpstimeanddate__gt=datetime.date(2005, 1, 1))
    

    【讨论】:

      【解决方案2】:

      应该使用_gt 而不是>。您可以从documentation 了解更多信息。

      result = Basestationreport.objects.filter(gpstimeanddate__gt = datetime.date(2005, 1, 1))
      

      【讨论】:

        【解决方案3】:

        这一行:

        result = Basestationreport.objects.filter(gpstimeanddate > datetime.date(2005, 1, 1))
        

        应该是

        result = Basestationreport.objects.filter(gpstimeanddate__gt=datetime.date(2005, 1, 1))
        

        像过滤器这样的 Django 查询只接受关键字参数,而不接受布尔表达式。查看this link,以及一般的文档。

        【讨论】:

          【解决方案4】:

          使用__gt 而不是>

          result = Basestationreport.objects.filter(gpstimeanddate__gt = datetime.date(2005, 1, 1))
          

          上面给出的所有文档链接都已损坏, 这是一个更新的链接:__gt

          【讨论】:

            猜你喜欢
            • 2021-11-10
            • 2014-01-27
            • 1970-01-01
            • 2021-02-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多