TypeError: ожидаемая строка или байтовый объект с запросом django Q - PullRequest
0 голосов
/ 20 июня 2020

Я пытаюсь отфильтровать объекты Event, чтобы показывать только те события, для которых event.day больше или равно сегодня. Однако при запуске я получаю следующую ошибку:

TypeError: expected string or bytes-like object

views.py

today = datetime.now().day
availability = Event.objects.filter(Q(day__gte=today)).order_by('-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)

1 Ответ

1 голос
/ 20 июня 2020

В настоящее время вы храните всю дату с годом, месяцем и днем ​​в своей модели, поэтому вы не можете запрашивать ее только с использованием целого числа, содержащего значение текущего дня, вам нужен весь объект даты или используйте поиск .

Чтобы получить текущий день и запросить его на DateField, вы должны использовать datetime.now().date():

today = datetime.now().date()
availability = Event.objects.filter(day__gte=today)).order_by('-day')

Если, однако, вам нужно чтобы пройти только день, вам потребуется еще один поиск:

today = datetime.now().day
availability = Event.objects.filter(day__day__gte=today)).order_by('-day')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...