2012-01-23 209 views
2

假设我们在模型中有一个类继承了其他几个类。现在我们还定义一个admin类来控制管理界面中的布局。Django admin覆盖字段集

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

例子:

在模型文件:

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

回答

0

我不知道如果它是一个整洁的解决方案,但它应该做你想做的。

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