Настройте Django Admin: добавьте больше одного встроенного по умолчанию в родительский Add_View
У меня есть модель администратора с несколькими встроенными моделями, включенными в нее (см.ResourceUserAdmin модель ниже для полного класса):
inlines = [
ResourceLocationInlineAdmin ,
ResourceCategoryInlineAdmin ,
ResourceStageInlineAdmin ,
]
Когда пользователь нажимает, чтобы создать новыйResourceUserAdmin Я хочу, чтобы строки классаResourceCategoryInlineAdmin чтобы получить начальные значения - обратите внимание, что эти отношения не будут сохранены в базе данных. Я пытался переопределить частиadd_view Функция, чтобы получить то, что я хочу, но я не могу понять, как передать несколько встроенных форм обратно к родителю.
Есть идеи как этого добиться?
Models
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 )
Вот встроенная модель, которую я хочу создать по умолчанию:
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 )