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 )