【问题标题】:Django admin overwriting fieldsetsDjango 管理员覆盖字段集
【发布时间】:2012-01-23 17:10:02
【问题描述】:

假设我们在模型中有一个类,从该类继承了其他几个类。现在我们还定义了一个管理类来控制管理界面中的布局。

我们可以让所有其他管理类继承(就像我们在模型中所做的那样),但是我们如何覆盖字段集以添加一些新值?

例子:

在模型文件中:

class A(models.Model):
  field1 = models.TextField(..)
  field2 = models.TextField(..)

class B(A):
  field3 = models.TextField(..)

在管理文件中:

class A_Admin(admin.ModelAdmin):
    fieldsets = (
        (None, {
            'fields': (( 'field1', 'field2'))
        }),
    )

class B_Admin(A_Admin):
    pass # here I notice that it takes the fields from A_admin, I would like to add my field 3 without rewriting the fieldsets 

admin.site.register(A, A_Admin)
admin.site.register(B, B_Admin)

生成的字段集将是:

(
        (None, {
            'fields': (( 'field1', 'field2'))
        }),

        ('Specific to B', {
            'fields': ('field3')
        }),
    )

【问题讨论】:

    标签: django-admin


    【解决方案1】:

    我不知道这是否是一个简洁的解决方案,但它应该可以满足您的需求。

    class A_Admin(admin.ModelAdmin):
        fieldsets = [
                (None, {'fields': ['field1', 'field2']}),
        ]
    
    class B_Admin(A_Admin):
        fieldsets = [
                 ('Specific to B', {'fields': ['field3', 'field4']}),
        ]
        fieldsets.insert(0, A_Admin.fieldsets[0])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-09
      • 1970-01-01
      • 2016-09-04
      • 1970-01-01
      • 2017-05-05
      • 2019-07-16
      • 2013-02-18
      • 2023-03-22
      相关资源
      最近更新 更多