如何基于 ManyToManyField 内部连接表并按参数分组并在 Django 中获取最新的表?
Posted
技术标签:
【中文标题】如何基于 ManyToManyField 内部连接表并按参数分组并在 Django 中获取最新的表?【英文标题】:How to inner join tables based on ManyToManyField and group by a parameter and get latest one in Django? 【发布时间】:2021-12-28 10:33:48 【问题描述】:我有两个具有 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
为每个教育插入。
【问题讨论】:
【参考方案1】:它对你有用吗,它会返回相应的 id
Education.objects.filter(price__in=Price.objects.all()).select_related('Price').values('id').annotate(price_id=Max('price__id'))
【讨论】:
以上是关于如何基于 ManyToManyField 内部连接表并按参数分组并在 Django 中获取最新的表?的主要内容,如果未能解决你的问题,请参考以下文章
使用自定义字段扩展 Django 的 ManyToManyField
如何在 mysqli 准备语句中使用多个内部连接和多个 WHERE 子句? [复制]
Django:如何检查用户是不是已经在 ManyToManyField 上投票?