假设我有两个以多对多关系连接的模型。
class Bar(models.Model):
name = models.CharField()
class Foo(models.Model):
name = models.CharField()
bars = models.ManyToManyField(Bars, through='FooBars')
class FooBars(models.Model):
date = models.DateTimeField(auto_now_add=true)
foo = models.ForeignKey(Foo, on_delete=models.CASCADE)
bar = models.ForeignKey(Bar, on_delete=models.CASCADE)
字符串
在Foo
的QuerySet中,我希望相关的Bars
按date
排序,这样我就可以在bars
中按日期排序的名称的组合字符串上对Foo
模型进行排序。
举例来说:FooBars
:
| 杆|日期,日期| date |
| --|--| ------------ |
| 阿尔法|2020年01月01日| 01-01-2020 |
| 贝他|2019 -03- 01| 01-03-2020 |
| 伽玛|2019 - 01-02| 01-02-2020 |
| 阿尔法|2020年01月01日| 01-01-2020 |
| 贝他|2019 - 01-02| 01-02-2020 |
| 伽玛|2019 -03- 01| 01-03-2020 |
按Foo.bars
的组合字符串排序的QuerySet:
| 巴尔斯| bars |
| --| ------------ |
| 阿尔法,贝塔,伽马| alpha, beta, gamma |
| 阿尔法,伽玛,贝塔| alpha, gamma, beta |
我尝试了一些Subquery
、F()
组合的注解,但无法获得要评估的注解并显示在Queryset上。
2条答案
按热度按时间js81xvg61#
如果你使用的是PostgreSQL,你可以执行以下操作:
字符串
StringAgg文档参考
liwlm1x92#
获取数据
字符串
在模板中,您可以使用https://docs.djangoproject.com/en/4.2/ref/templates/builtins/#regroup