我有一个简单的方法。条目是时间表应用程序中的条目,员工输入他们的工作时间。
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的不支持查找'日期'或不在字段上加入 允许“。
我不太明白这个消息。指定的字段是日期字段,没有进一步的限制。任何提示都将不胜感激。
答案 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')