如何在渲染 StackedInline 字段时覆盖 str 方法?

How to override the str method when rendering StackedInline field?

我有一个多对多的关系:

class GroupeCategoriesCategorie(models.Model):
    groupe_categories = models.ForeignKey(GroupeCategories,
                                          related_name='groupe',
                                          verbose_name=_(u'Groupe'))
    categorie = models.ForeignKey(Categorie,
                                  related_name='categorie',
                                  verbose_name=_(u'Catégorie'))

    def __str__(self):
        return _(u'{} / {}').format(self.groupe_categories, self.categorie)

在管理中呈现时,except 之前,我总是需要像 __str__ 方法这样的表示。为什么?我的 admin.py 看起来像这样:

class GroupeCategoriesCategoriesInline(CollapsedStackedInline):
    model = GroupeCategories.liens.through
    fk_name = 'groupe_categories'
    raw_id_fields = ('categorie',)
    extra = 0    

class GroupeCategoriesAdmin(admin.ModelAdmin):

    fields = ('description', 'exemple',)
    inlines = (GroupeCategoriesCategoriesInline,)

结果如下:

如您所见,当您编辑 GroupeCategories 时,您首先会看到 Description 字段,并且此 description 会在每个 manytomany 行之后重复...很丑。我想覆盖 __str__ 方法,但 仅在此处 。你是怎么做到的?

您可以轻松覆盖内联使用的模板:

class GroupeCategoriesCategoriesInline(admin.StackedInline):
    [...]
    template = 'yourapp/admin/stackedinline.html'

获取此模板的副本:

https://github.com/django/django/blob/master/django/contrib/admin/templates/admin/edit_inline/stacked.html