开发者

Django: Friendlier header for StackedInline for auto generated through model?

I'm using a Django admin StackedInline, as follo开发者_开发技巧ws:

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

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

It all works, but the header is pretty ugly:

Books With This Subject
Book: Book_subject object

Anyone know how I can get rid of, or change, the Book_subject object part?

thanks!


I've never used an m2m field like this, so thanks! Learned something new.

I found 2 ways to get around the problem:

1: simply reassign the __unicode__ function with a new function

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

2: set up a proxy model for the m2m.through model and use that model instead

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

class MyInline(admin.TabularInline):
    model = MyThrough


For some reason, the (admittedly now old) accepted answer did not work for me.

This modification, however, did change the header:

MyModel.field.through.__str__ = lambda x: 'New Title'

Where field is the ManyToMany field.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜