Django:通过模型自动生成的StackedInline的Friendlier标头?

发布于 2021-01-29 17:12:48

我正在使用Django管理员StackedInline,如下所示:

class BookInline(admin.StackedInline):
    model = Book.subject.through
    verbose_name = 'Book'
    verbose_name_plural = 'Books with this subject'

class SubjectAdmin(admin.ModelAdmin):
    inlines = [
        BookInline,
    ]

都可以,但是标题很丑陋:

Books With This Subject
Book: Book_subject object

有人知道我该如何摆脱或改变这一Book_subject object部分?

谢谢!

关注者
0
被浏览
44
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    我从未使用过像这样的m2m字段,所以谢谢!学到了新东西。

    我发现了解决该问题的两种方法:

    1:只需__unicode__使用新功能重新分配功能

    class MyInline(admin.TabularInline):
        MyModel.m2m.through.__unicode__ = lambda x: 'My New Unicode'
        model = MyModel.m2m.through
    

    2:为m2m.through模型设置代理模型,并改用该模型

    class MyThrough(MyModel.m2m.through):
        class Meta:
            proxy = True
        def __unicode__(self):
            return "My New Unicode"
    
    class MyInline(admin.TabularInline):
        model = MyThrough
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看