Python / Django日期查询:DateField不支持查找“日期”或不允许在字段上加入

时间:2016-06-22 15:52:30

标签: python django date

我有一个简单的方法。条目是时间表应用程序中的条目,员工输入他们的工作时间。

class Entry(m.Model):
    """ Represents an entry in a time_sheet. An entry is either for work, sick leave or holiday. """
    # type choices
    WORK     = 'w'
    SICK     = 's'
    VACATION = 'v'
    type_choices = (
        (WORK,     'work'),
        (SICK,     'sick leave'),
        (VACATION, 'vacation'),
    )
    # meta
    cr_date = m.DateTimeField(auto_now_add=True, editable=False, verbose_name='Date of Creation')  # date of creation
    owner   = m.ForeignKey(User, editable=False, on_delete=m.PROTECT)
    # content
    type    = m.CharField(max_length=1, choices=type_choices, default='w')
    day     = m.DateField(default=now)
    start   = m.TimeField(blank=True)  # starting time
    end     = m.TimeField(blank=True)  # ending time
    recess  = m.IntegerField()  # recess time in minutes
    project = m.ForeignKey(Project, on_delete=m.PROTECT)

    @classmethod
    def get_entries_for_day(cls, user, day):
        """ Retrieves any entries for the supplied day. """
        return Entry.objects.filter(day__date=day, owner=user).order_by('start')

但是,当我尝试像这样运行我的项目时,它会终止并显示以下错误代码:

  

“DateField的不支持查找'日期'或不在字段上加入   允许“。

我不太明白这个消息。指定的字段是日期字段,没有进一步的限制。任何提示都将不胜感激。

2 个答案:

答案 0 :(得分:5)

在DateField上没有__date查找这样的东西;这个领域已经是一个约会。

目前尚不清楚您要将此字段与此字段进行比较。您传递给该方法的那一天是整数还是日期?如果它也是一个约会,那么你应该直接比较它们。

答案 1 :(得分:0)

我遇到了Django过滤器的问题,该过滤器在使用时没有采用相同的日期范围。所以我在date__lte/gte中这样添加了lookup_expr.something

from_date = django_filters.DateFilter(field_name="created_at", lookup_expr='date__gte')
to_date = django_filters.DateFilter(field_name="created_at", lookup_expr='date__lte')