如何按字母顺序对多对多 django-admin 框中的值进行排序?

Posted

技术标签:

【中文标题】如何按字母顺序对多对多 django-admin 框中的值进行排序?【英文标题】:How to alphabetically sort the values in a many-to-many django-admin box? 【发布时间】:2010-11-22 09:57:58 【问题描述】:

我有一个像这样的简单模型:

class Artist(models.Model):
   surname = models.CharField(max_length=200)
   name = models.CharField(max_length=200, blank=True)
   slug = models.SlugField(unique=True)
   photo = models.ImageField(upload_to='artists', blank=True)
   bio = models.TextField(blank=True)  

class Images(models.Model):
   title = models.CharField(max_length=200)
   artist = models.ManyToManyField(Artist)
   img = models.ImageField(upload_to='images')

好吧,我开始插入一些艺术家,然后进入图像插入表单。我发现多对多艺术家框是未排序的:

蒙迪诺·奥尔多 Aliprandi Bernardo Rotella Mimmo Corpora Antonio

代替:

Aliprandi Bernardo Corpora Antonio 蒙迪诺·奥尔多 Rotella Mimmo

我该如何解决这个问题? 有什么建议吗? 提前谢谢你。

马特奥

【问题讨论】:

【参考方案1】:

在文章的内部Meta 类上设置ordering

class Article(models.Model):
    ....

    class Meta:
        ordering = ['surname', 'name']

【讨论】:

不要!这对您的整个应用程序具有性能影响(请参阅链接的 django 文档中的警告)。我建议在这里使用 Daniel 的更好答案:***.com/a/1474175/758345

以上是关于如何按字母顺序对多对多 django-admin 框中的值进行排序?的主要内容,如果未能解决你的问题,请参考以下文章

SQLAlchemy如何在多对多中按孩子过滤

Django 如何对多对多字段进行批量add

按标签、多对多关系查找所有文章

在Django中按关系字段过滤多对多关系

多对多关系的查询集按列表中的匹配数排序

使用 Django 按连接数查询多对多关系