Django Query с использованием .order_by () и .latest ()

У меня есть модель:

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')

А потом я захотел instance.latest () , но он не дал мне правильный экземпляр, на самом деле он дал мне первый экземпляр. Только когда я установил order_by в -creation_date или фактически удалил order_by из запроса, .latest () дал мне правильный экземпляр. Это также происходит, когда я тестирую это вручную, используя оболочку python manage.py вместо представления.

Итак, то, что я сделал сейчас, находится в мете модели, которую я указал order_by = ['creation_date'] и не использовал его в запросе, и это работает.

Я ожидал, что .latest () всегда будет возвращать самый последний экземпляр на основе поля (дата) (время). Может ли кто-нибудь сказать мне, правильно ли, что .latest () ведет себя странно, когда вы используете order_by в запросе?

39
задан blahdiblah 12 October 2012 в 23:45
поделиться