【问题标题】:How to override the str method when rendering StackedInline field?渲染 StackedInline 字段时如何覆盖 str 方法?
【发布时间】:2016-01-04 00:01:08
【问题描述】:

我有一个多对多的关系:

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,)

结果如下:

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

【问题讨论】:

    标签: django django-forms django-admin


    【解决方案1】:

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

    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

    【讨论】:

      猜你喜欢
      • 2017-12-11
      • 2011-08-18
      • 2010-11-29
      • 1970-01-01
      • 2016-07-23
      • 1970-01-01
      • 2013-06-22
      • 2017-08-28
      • 1970-01-01
      相关资源
      最近更新 更多