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 个回答
3
出于某种原因,那个(确实现在有点旧了)被接受的答案对我来说没用。
不过,这个修改确实改变了标题:
MyModel.field.through.__str__ = lambda x: 'New Title'
这里的 field
是指多对多的字段。
12
我以前从来没有用过这样的多对多字段,感谢你!我学到了新东西。
我找到了解决这个问题的两种方法:
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