首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ModelAdmin排序?

ModelAdmin排序?
EN

Stack Overflow用户
提问于 2011-04-25 06:02:25
回答 1查看 4.9K关注 0票数 7

使用Django Admin界面,如何确保HTML select multiple中的对象按某种顺序(首选字母顺序)排序?问题是我有3种型号- CD,Song,Singer。其中的CD管理仪表板,歌曲是内联到CD和歌手是一个许多领域,我想排序!

我的model.py文件:

代码语言:javascript
复制
class CD(models.Model):

    cd_name = models.CharField("CD Name",max_length=50)
    date = models.DateField("CD Release Date")
    photo = models.ImageField("CD Cover",blank=True,upload_to='covers')
    singers = models.ManyToManyField(Singer,blank=True,null=True) 

    def __unicode__(self):
        return self.cd_name

class Song(models.Model):

    cid = models.ForeignKey(CD)
    track_num = models.PositiveIntegerField("Track Number",max_length=2) 
    song_name = models.CharField("Song Name",max_length=50)
    soloists = models.ManyToManyField(Singer,blank=True,null=True) 
    stream_url = models.URLField("Stream URL", blank=True)

    def __unicode__(self):
        return self.song_name

class Singer(models.Model): (not relevent)

我的admin.py文件:

代码语言:javascript
复制
class SongInline(admin.TabularInline):
    model = Song
    extra = 0

class CDAdmin(admin.ModelAdmin):

    list_display = ('cd_name', 'date')

    inlines = [
        SongInline,
    ]

admin.site.register(CD, CDAdmin)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-25 06:54:50

formfield_for_manytomany

代码语言:javascript
复制
class SongInline(admin.TabularInline):
    model = Song
    extra = 0

    def formfield_for_manytomany(self, db_field, request, **kwargs):
            if db_field.name == "soloists":
                kwargs["queryset"] = Singer.objects.order_by('last_name')
            return super(SongInline, self).formfield_for_manytomany(db_field, request, **kwargs)

这回答了您特定的"ModelAdmin排序“问题,但在您的示例中,您可以通过模型ordering模型元类选项简单地为您的m2m模型定义默认排序。

http://docs.djangoproject.com/en/dev/ref/models/options/#ordering

代码语言:javascript
复制
class Singer(models.Model):
    # my model
    class Meta:
        ordering = ['name'] # your select box will respect this as well.
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5773529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档