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

时间:2016-01-04 00:01:09

标签: django django-forms django-admin

我有很多关系:

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)

在管理员中呈现时,我总是需要__str__方法之前的except方法。为什么?我的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,)

这是结果:

django manytomany

正如您所看到的,当您编辑GroupeCategories时,您会先看到Description字段,并且此后的每个多行都会重复此description ...这很难看。我想覆盖__str__方法,但仅限。你是怎么做到的?

1 个答案:

答案 0 :(得分:0)

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

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