Python TypeError:django Q查询需要字符串或类似字节的对象
我正在尝试筛选事件对象,以仅显示Event.day大于或等于今天的事件。但是,我在运行时遇到以下错误:Python TypeError:django Q查询需要字符串或类似字节的对象,python,django,Python,Django,我正在尝试筛选事件对象,以仅显示Event.day大于或等于今天的事件。但是,我在运行时遇到以下错误: TypeError:预期的字符串或字节,如对象 views.py today = datetime.now().day availability = Event.objects.filter(Q(day__gte=today)).order_by('-day') 事件模型中的day字段是DateField。任何帮助都将不胜感激。谢谢 model.py: class Event(models.
TypeError:预期的字符串或字节,如对象
views.py
today = datetime.now().day
availability = Event.objects.filter(Q(day__gte=today)).order_by('-day')
事件模型中的day字段是DateField。任何帮助都将不胜感激。谢谢
model.py:
class Event(models.Model):
requester_user = models.ForeignKey(User, on_delete= models.CASCADE,related_name="requester_user", null=True, blank=True)
mentor_user = models.ForeignKey(User, on_delete= models.CASCADE,related_name="mentor_user")
day = models.DateField(u'Day of the event', help_text=u'Day of the event')
start_time = models.TimeField(u'Starting time', help_text=u'Starting time')
end_time = models.TimeField(u'Final time', help_text=u'Final time')
notes = models.TextField(u'Textual Notes', help_text=u'Textual Notes', blank=True, null=True)
isConfirmed = models.BooleanField(default=False)
class Meta:
verbose_name = u'Scheduling'
verbose_name_plural = u'Scheduling'
def __str__(self):
return str(self.start_time)
您当前在模型上存储的是包含年、月和日的整个日期,因此您不能仅使用包含当前日期值的整数进行查询,您需要整个日期对象或使用 要获取当前日期并在
DateField
上查询它,应使用datetime.now().date()
:
但是,如果您只需要度过需要再次查找的一天:
today = datetime.now().day
availability = Event.objects.filter(day__day__gte=today)).order_by('-day')
您不需要
Q()
->.filter(day\uu gte=today)
,另外,请发布事件的模型定义,或者至少发布day
的字段类型,谢谢您的帮助。我不得不使用第二种方法,因为我将日值存储在一个单独的字段中。然而,现在我意识到了这个问题。如果today=“19”,那么这意味着即使是7月10日的日期也将被视为小于19,并且无法通过检查,因为我只是在比较这一天。如果我去掉单独的日期字段,只使用开始和结束日期时间字段,您发布的第一个解决方案是否有效?@winston我认为,如果您想按日期而不是仅按天进行筛选,则应使用第一个方法,它适用于整个日期,例如:假设今天是2020-25-12
,并且您有这些日期(2020-01-11
,2020-24-12
,2020-25-12
,2020-01-01
)如果使用第一种方法过滤整个日期,则只会返回最后两个日期。
today = datetime.now().day
availability = Event.objects.filter(day__day__gte=today)).order_by('-day')