4.如何从2个不同的模型创建单个Django admin

Hero有外键Category,所以你可以在Hero的管理页面选择category,如果你还想从Hero管理页面创建Category对象,你可以修改Hero admin的表单,并自定义save_model行为:

  1. class HeroForm(forms.ModelForm):
  2. category_name = forms.CharField()
  3. class Meta:
  4. model = Hero
  5. exclude = ["category"]
  6. @admin.register(Hero)
  7. class HeroAdmin(admin.ModelAdmin, ExportCsvMixin):
  8. form = HeroForm
  9. ....
  10. def save_model(self, request, obj, form, change):
  11. category_name = form.cleaned_data["category_name"]
  12. category, _ = Category.objects.get_or_create(name=category_name)
  13. obj.category = category
  14. super().save_model(request, obj, form, change)

进行修改后,你的管理页面所示,允许从Hero管理页面创建或更新Category4.如何从2个不同的模型创建单个Django admin - 图1