Django модель не преобразует поле даты в datetime.date? - PullRequest
4 голосов
/ 14 января 2020

Давайте напишем простую Django модель с DateField :

class MyModel(models.Model):
  my_date = models.DateField(null=True, blank=True)

У меня возникла странная проблема при создании объектов:

m1 = MyModel.objects.create(my_date=date.today())
print(type(m1.my_date)) # => <class 'datetime.date'>

m2 = MyModel.objects.create(my_date="2020-01-14")
print(type(m2.my_date)) # => <class 'str'>

Итак ... В отличие от того, что я прочитал в do c Django DateField (" Дата, представленная в Python экземпляром datetime.date ") кажется, что Django не приводит значение к экземпляру datetime.date, если при создании объекта указывается дата в виде строки?

1 Ответ

4 голосов
/ 14 января 2020

Поле не предварительно преобразует атрибут в определенный тип. Когда вы сохраните в базе данных, он преобразует его в поле date / datetime, а позже, когда вы извлечете его из базы данных, это будет date / datetime field.

Действительно, возьмем следующий пример:

m2 = MyModel.objects.create(my_date="2020-01-14")
m3 = MyModel.objects.get(m2.pk)
print(type(m3.my_date)) # => <class 'datetime.date'>
...