Django 找不到模型属性

丹斯

在我的 Django 项目中,我有一个如下所示的 models.py:

from django.db import models

class Battle(models.Model):

    def __str__(self):
        return self.battle_name

    battle_name = models.CharField(max_length=200)
    start_time = models.DateTimeField()
    end_time = models.DateTimeField()
    password = models.CharField(max_length=50)

当我进入 Django shell ( python manage.py shell) 时,我无法与任何一个 DateTimeField 属性进行交互。

$ python manage.py shell
Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from battles.models import Battle
>>> Battle.objects.all()
<QuerySet [<Battle: my first battle>, <Battle: Take back the motherland>, <Battle: this is the big one>]>
>>> Battle.objects.filter(battle_name='my first battle')
<QuerySet [<Battle: my first battle>]>
>>> import datetime
>>> Battle.objects.filter(end_time<datetime.datetime.now())
Traceback (most recent call last):
  File "<console>", line 1, in <module>
NameError: name 'end_time' is not defined
>>> Battle.objects.filter(end_time < datetime.datetime.now())
Traceback (most recent call last):
  File "<console>", line 1, in <module>
NameError: name 'end_time' is not defined

我错过了什么吗?

游艇

让我补充一点解释..

Battle.objects.filter(end_time < datetime.datetime.now())

filter()是一个接受参数(args 或 kwargs)的可调用对象。使用上面的代码,您尝试将布尔值 ( object < object) 作为参数传递给可调用过滤器。现在,是否使用布尔值TrueFalse指定有关模型字段的任何内容?

你应该做的是传递一个关键字参数,即

Battle.objects.filter(end_time__lt=datetime.datetime.now())

现在filter()获取它需要的信息,kwarg 参数end_time__lt(它指定模型字段以及比较方法)和需要比较的值datetime.datetime.now()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章