Как внутренне объединить таблицы на основе поля ManyToManyField, сгруппировать по параметру и получить последнюю в Django?
У меня есть две модели с отношением ManyToManyField:
class Education(models.Model):
title = models.CharField(default=None, max_length=100)
content = models.TextField(default=None)
price = models.ManyToManyField(Price)
class Price(models.Model):
cost = models.CharField(default=None, max_length=20)
created_at = models.DateTimeField(auto_now=True, null=True, blank=True)
Я могу получить все строки следующим образом:
result = Education.objects.filter(price__in=Price.objects.all()).select_related('Price')/
.values_list('title', 'content', 'price__cost', 'price__created_at')
Но теперь я хочу сгруппировать по education.id
и параметр cost
должен быть последним вставленным параметром (основанным на created_at
).
Я хочу иметь список всех Education
с последними cost
, которые вставлены для каждого образования.
Будет ли это работать для вас, Это вернет соответствующий id
Education.objects.filter(price__in=Price.objects.all()).select_related('Price').values('id').annotate(price_id=Max('price__id'))