2010-08-21 29 views

Trả lời

0

chưa được kiểm tra, nhưng có thể làm việc:

class MyAdmin(BaseAdmin): 
    fieldsets = BaseAdmin.fieldsets + (...) 

này sẽ (nếu nó hoạt động) thêm các fieldets khác sau các fieldet thừa kế.

+0

BaseAdmin.fieldsets trống tại thời điểm này. – second

10

Bạn có thể ghi đè phương thức get_fieldsets của ModelAdmin.

thực hiện

Giá trị mặc định trông như thế này:

def get_fieldsets(self, request, obj=None): 
    "Hook for specifying fieldsets for the add form." 
    if self.declared_fieldsets: 
     return self.declared_fieldsets 
    form = self.get_form(request, obj) 
    fields = form.base_fields.keys() + list(self.get_readonly_fields(request, obj)) 
    return [(None, {'fields': fields})] 

Vì vậy, bạn có thể ghi đè lên nó ví dụ như thế này:

class MyCustomAdmin(ModelAdmin): 
    def get_fieldsets(self, request, obj=None): 
     fs = super(MyCustomAdmin, self).get_fieldsets(request, obj) 
     # fs now contains [(None, {'fields': fields})], do with it whatever you want 
     all_fields = fs[0][1]['fields'] 
     return fs 
0

Dưới đây là một ví dụ của việc mở rộng một lớp tùy chỉnh ModelAdmin và thêm một fieldset thêm.

Lưu ý lần đầu tiên tôi thử điều này, tôi đã bỏ chọn "nếu không ...". Mỗi lần tôi làm mới trang, các phần bổ sung được lặp lại trên trang.

class GISDataFileAdmin(admin.ModelAdmin): 
    # abbreviated version of detailed fieldsets (one fieldset named 'Datafile Info') 
    fieldsets = [('DataFile Info', {\ 
       'fields': ('datafile_id', 'datafile_label', 'datafile_version')\ 
       }),] 

class ShapefileSetAdmin(GISDataFileAdmin):  

    # extend fieldsets in GISDataFileAdmin 
    def get_fieldsets(self, request, obj=None): 

     # get fieldset(s) from GISDataFileAdmin 
     # 
     fs = super(ShapefileSetAdmin, self).get_fieldsets(request, obj) 

     # pull out the fieldset name(s) e.g. [ 'DataFile Info'] 
     # 
     section_names = [ x[0] for x in fs if x is not None and len(x) > 0 and not x[0] == ''] 

     # check if new fieldset info has been added 
     # if not, add the new fieldset 
     # 
     if not 'Shapefile Info' in sections_names: 
      # Add new info as the top fieldset 
      fs = [ ('Shapefile Info', { 
       'fields': ('name', ('zipfile_checked', 'has_shapefile')) 
        })] + fs 
     return fs 
Các vấn đề liên quan