Аннотировать набор запросов Django с указанием даты и времени

Итак, у меня есть набор запросов, который мне нужно аннотировать с некоторыми дополнительными полями, включая целые числа, логические значения и datetime. Что-то вроде этого:

def get_appointments_with_overrides(override_price, override_start_time, override_advance_booking_needed):
    return (Appointments.objects.annotate(override_price=Value(override_price, IntegerField())).
             annotate(override_start_time=Value(override_start_time, DateTimeField())).
              annotate(override_advance_booking_needed=Value(override_advance_booking_needed, BooleanField())))

Где override_price и т. Д. - все свойства (но не поля Django) в модели Appointments .

Когда я пытаюсь использовать это (в частности, когда я вызываю first() или last() в аннотированном наборе запросов), я получаю следующую ошибку.

AttributeError: 'DateTimeField' object has no attribute 'model'

Если я удаляю аннотацию datetime, я не получаю никаких ошибок, а две другие аннотации работают точно так, как я ожидаю. Так что, если что, я делаю неправильно с этой аннотацией даты и времени?

Отредактировано, чтобы добавить модель встреч:

class Appointments(model):

  price = models.IntegerField(null=False)
  start_time = models.DateTimeField(null=False)
  advance_booking_needed = models.BooleanField(null=False, default=True)

  __override_price = None
  __override_start_time = None
  __override_advance_booking_needed = None

  @property
  def override_price(self):
     return self.__override_price

  @override_price.setter
  def override_price(self, value):
     self.__override_price = value

  @property
  def override_start_time(self):
     return self.__override_start_time

  @override_start_time.setter
  def override_start_time(self, value):
     self.__override_start_time = value

  @property
  def override_advance_booking_needed(self):
     return self.__override_advance_booking_needed

  @override_advance_booking_needed.setter
  def override_advance_booking_needed(self, value):
     self.__override_advance_booking_needed = value
0
Можете ли вы включить свою модель Appointments , чтобы мы могли видеть определение полей и свойств?
добавлено автор Ralf, источник
Можете ли вы добавить полную трассировку для ошибки?
добавлено автор Håken Lid, источник
@Ralf Я добавил один
добавлено автор J. Bestoso, источник

1 ответы

Простая и простая, вы не можете использовать свойства для поиска ORM, это не поддерживается.

Вы могли бы, однако, заглянуть в пользовательские средства просмотра и реализовать свой собственный для ваш вариант использования.

С другой стороны:

В определении модели вы объявляете __ override_price и т. Д. ... как атрибуты класса, и вы можете быть уверены, что знаете разницу: Класс против атрибутов экземпляра .

1
добавлено
Так почему же он работает для целочисленных и логических свойств, а не для datetime?
добавлено автор J. Bestoso, источник
Python
Python
7 654 участник(ов)

Уютный чат для профессионалов, занимающихся поиском питоньих мудростей. Как не получить бан: https://t.me/ru_python/577926

Python beginners
Python beginners
4 449 участник(ов)

Вопросы про Python для чайников. Cпам и троллинг неприемлем. Не злоупотребляйте стикерами. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Статистика тут: https://grstats.me/chat/x4qym2k5uvfkr3al6at7

Django
Django
1 931 участник(ов)

Полезная информация и правила: https://github.com/django-ru/faq Вакансии и резюме: @django_jobs Пофлудить идём сюда: @django_flood Статистика чата: combot.org/chat/-1001063854692

pro.python
pro.python
1 090 участник(ов)

Сообщество разработчиков под Python Создатель: @rodgelius

Rude Python
Rude Python
971 участник(ов)

Python без „девочек”, здесь матерятся и унижают Django. Not gay friendly. Правила: t.me/rudepython/114107 @rudepython | t.me/rudepython

django_jobs
django_jobs
916 участник(ов)

Поиск и предложения работы (Django) Правила: https://t.me/django_jobs/4 Вакансии с тегом #job улетают в канал @django_jobs_board Вопросы к @amureki Основной чат @pydjango

Django
Django
733 участник(ов)

Веб-фреймворк для перфекционистов с дедлайнами. Наша группа на vk: https://vk.com/django_framework В Discord: https://discord.me/django_framework по всем вопросам @MechanisM

rupython
rupython
509 участник(ов)

Группа создана с целью оперативного получения ответов на возникающие вопросы по разработке на яп python, смежные темы, а также человеческого общения. Приветствую!

Python-programming
Python-programming
266 участник(ов)

Чат группы вконтакте https://vk.com/python_community

django flood
django flood
71 участник(ов)

Флудилка джангистов Пока без правил