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.