Django: более дружелюбный заголовок для StackedInline для автоматического создания через модель?

Я использую администратор 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 часть?

спасибо!

2 ответов


Я никогда не использовал поле m2m, как это, так что спасибо! Узнал что-то новое.

Я нашел 2 способа обойти проблему:

1: просто переназначить __unicode__ функция с новой функцией

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

2: Настройка прокси-модель для m2m.через модель и использовать эту модель вместо

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

class MyInline(admin.TabularInline):
    model = MyThrough

эта модификация, однако, изменила заголовок:

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

здесь field поле ManyToMany.