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

标签 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)

在管理中呈现时,我总是需要在 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,)

结果如下:

django manytomany

如您所见,当您编辑 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

关于django - 如何在渲染 StackedInline 字段时覆盖 str 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34583077/

相关文章:

javascript - 如何使用ckeditore使用ajax发送数据?

python - Django 管理多对多子集

Django 初学者。如何更新所有对象并将某个字段设置为另一个字段的函数值?

python - 无法调用自定义上下文处理器

Django Form 将 ChoiceField 选项设置为 Form 被调用

python - Django:当我尝试从管理员创建用户时出现操作错误

python - 使用 Django admin 复制模型

Django 管理员 : Need to conditionally display fields

python - 如何从 Django 注册表单中的密码字段获取纯密码

python - Django:表单中未加载字段