Django: более дружелюбный заголовок для StackedInline для автоматически сгенерированной модели? - PullRequest
7 голосов
/ 08 февраля 2011

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

8 голосов
/ 08 февраля 2011

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

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

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
1 голос
/ 15 марта 2018

По какой-то причине принятый (по общему признанию, старый) ответ не сработал для меня.

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

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

Где fieldэто поле ManyToMany.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...