Я наткнулся на то, что сам не могу понять - во время фильтрации (в Django ORM) запроса я хотел бы запросить объекты, удовлетворяющие условию, что какое-то поле последнего объекта в списке из множества объектов равнок некоторому вкладу.Это может показаться не столь очевидным, поэтому ниже я привожу пример: Модель животного
class Animal(models.Model):
name = models.TextField(null=True, blank=False)
awards = models.ManyToManyField(Award, related_name='awards')
Модель награды
class Award(models.Model):
name = models.TextField(null=False, blank=False)
place = models.TextField(null=True, blank=True)
date = models.DateTimeField(null=True)
class Meta:
ordering = ['date']
Имея этиклассы, я хотел бы построить запрос следующим образом:
Animal.objects.filter(awards__name__last='National Award')
Потому что Animal.objects.filter(awards__name='National Award')
обычно возвращает (при использовании .values()
) список, выглядящий так:
[{'name': u'National Award', 'place': u'capital', 'date': datetime.datetime(2018, 7, 13, 5, 2, 45, 23000), u'id': 1}, {'name': u'International Award', 'place': u'capital', 'date': datetime.datetime(2018, 10, 1, 1, 1, 55, 79000), u'id': 2}]
и для такихобъект, запрос будет пропускать его, поскольку «Национальная премия» не находится на последней позиции в списке, но если этот объект переключил бы эти записи, он будет возвращен этим запросом, поскольку последний объект name
равен«Национальная премия».Я не хочу использовать поле date
для этого запроса.