Python TypeError:django Q查询需要字符串或类似字节的对象

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.

我正在尝试筛选事件对象,以仅显示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.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')