2010-08-21 7 views

Répondre

0

Untested, mais il peut travailler:

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

Ce serait (si cela fonctionne) ajouter la d'autres fieldsets après ceux hérités.

+0

BaseAdmin.fieldsets est vide à ce stade. – second

10

Vous pouvez remplacer la méthode get_fieldsets de ModelAdmin.

L'implémentation par défaut ressemble à ceci:

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

Vous pouvez la remplacer par exemple comme ceci:

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

Voici un exemple de l'extension d'une classe ModelAdmin personnalisée et en ajoutant une fieldset supplémentaire.

Notez la première fois que j'ai essayé ceci, j'ai omis le contrôle "si non ...". Chaque fois que j'ai rafraîchi la page, les sections supplémentaires ont été répétées sur la page.

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 
Questions connexes