Anpassen des Django-Administrators: Fügen Sie mehr als eine Standard-Inline in Parent Add_View hinzu

Ich habe ein Admin - Modell mit ein paar Inline - Modellen (sieheResourceUserAdmin Modell unten für die ganze Klasse):

    inlines = [ 
            ResourceLocationInlineAdmin ,
            ResourceCategoryInlineAdmin , 
            ResourceStageInlineAdmin ,
          ]

Wenn ein Benutzer klickt, um einen neuen zu erstellenResourceUserAdmin Ich möchte die Inlines der KlasseResourceCategoryInlineAdmin um anfängliche Werte zu erhalten, beachten Sie, dass diese Beziehungen nicht in der Datenbank gespeichert werden. Ich habe versucht, Teile des zu überschreibenadd_view Funktion, um zu bekommen, was ich will, aber ich kann nicht herausfinden, wie mehrere Inline-Formulare an Eltern zurückgegeben werden.

Irgendwelche Ideen, wie dies erreicht werden kann?

Modelle

class ResourceUserAdmin( admin.ModelAdmin ):
    inlines = [ 
            ResourceLocationInlineAdmin ,
            ResourceCategoryInlineAdmin , 
            ResourceStageInlineAdmin ,
          ]

    list_display = ( 
                 'user' , 
                 'name' ,
                 'state' ,
                 'email' ,
                 'website' ,
                 'phone' ,
                 'logo_url_link',
    )

    search_fields = ( 'name' , 'email' , 'website'  )

    list_filter = ( 'name' , 'state' , 'email' , 'website' )

    ordering = ( 'name', )

     fields = ( 
             'user' , 
             'name' ,
             'state' ,
             'email' ,
             'website' ,
             'phone' ,
             'logo' ,
             'ideal_candidate',
    )
admin.site.register( ResourceUser, ResourceUserAdmin )

Hier ist das Inline-Modell, das ich standardmäßig für viele erstellen möchte:

class ResourceCategoryInlineAdmin( admin.StackedInline ):
    model = ResourceCategory
    extra = 0

class ResourceCategoryAdmin( admin.ModelAdmin ):
    list_display = ( 'user' ,
                     'category' , )

    ordering = ( 'user' , )
    fields = ( 'user' , 'category' )

    def formfield_for_foreignkey( self, db_field, *args, **kwargs ):
        if isinstance( db_field, models.ForeignKey ):
            if db_field.name == 'category':
                kwargs['widget'] = forms.RadioSelect()
        return super( ResourceCategoryAdmin, self).formfield_for_foreignkey( db_field, **kwargs )

admin.site.register( ResourceCategory, ResourceCategoryAdmin )

Antworten auf die Frage(1)

Ihre Antwort auf die Frage