我有以下 Django 模型(这里非常简化):
class Author:
name = models.TextField()
class Editor:
name = model.TextField()
class Publication:
authors = models.ManyToManyField(Author)
editors = models.ManyToManyField(Editor)
出版物可以有作者或编辑,但不能同时有两者。我想按作者和编辑的统一排序,按字母顺序排列的出版物列表。换句话说,我想按一个虚拟字段排序,我们称之为creators
作者和编辑的串联。
查询:
Publication.objects.all().order_by('authors__name', 'editors__name')
...将没有作者的出版物聚集在一起,并在该组中根据编辑进行排序,这不是我想要的。实际上,它应该使用任何可用于出版物的作者或编辑,并按此排序。
这种排序必须发生在数据库级别,结果集可能很大。