У меня есть модель:
class MyModel(models.Model):
creation_date = models.DateTimeField(auto_now_add = True, editable=False)
class Meta:
get_latest_by = 'creation_date'
У меня был запрос на мой взгляд, который сделал следующее:
instances = MyModel.objects.all().order_by('creation_date')
И потом мне захотелось instances.latest(), но это не дало бы мне правильный экземпляр, на самом деле это дало мне первый экземпляр. Только когда я установил order_by в -creation_date или фактически удалил order_by из запроса, .latest() дайте мне правильный экземпляр. Это также происходит, когда я проверяю это вручную, используя оболочку python manage.py вместо представления.
Итак, что я сделал сейчас, в Model Meta я перечислил order_by = ['creation_date'] и не использовал это в запросе, и это работает.
Я бы ожидал, что .latest() всегда будет возвращать самый последний экземпляр, основанный на поле (дата) (время). Может ли кто-нибудь сказать мне, исправляет ли это, что .latest() ведет себя странно, когда вы используете order_by в запросе?