Django Admin Cookbook-24如何从两个不同的模型创建一个Django Admin后台页面
24.如何从两个不同的模型创建一个Django管理员?
Hero模型外联到Category,因此你可以从Hero管理页面中选择一个Category对象。如果还希望能够从Hero管理页面创建及修改Category对象,则可以更改HeroAdmin管理模型,并自定义 save_model行为。
class HeroForm(forms.ModelForm): category_name = forms.CharField() class Meta: model = Hero exclude = ["category"] @admin.register(Hero) class HeroAdmin(admin.ModelAdmin, ExportCsvMixin): form = HeroForm .... def save_model(self, request, obj, form, change): category_name = form.cleaned_data["category_name"] category, _ = Category.objects.get_or_create(name=category_name) obj.category = category super().save_model(request, obj, form, change)
更改后,Admin后台显示如下,允许从Hero管理员创建或更新Category对象。