在Django中,内联(Inline)是一种方便的方式来在Admin后台编辑相关模型的关联对象。默认情况下,内联对象在保存时不会自动保存,需要手动点击保存按钮。然而,有时候我们希望在保存主对象时同时保存内联对象,这就需要强制Django Admin保存内联。
要实现强制Django Admin保存内联,可以通过自定义Admin类和重写相关方法来实现。以下是一种常见的实现方式:
from django.contrib import admin
class InlineModelAdmin(admin.ModelAdmin):
def save_related(self, request, form, formsets, change):
super().save_related(request, form, formsets, change)
for formset in formsets:
instances = formset.save(commit=False)
for instance in instances:
instance.save()
formset.save_m2m()
from django.contrib import admin
from .models import ParentModel, InlineModel
class InlineModelInline(admin.TabularInline):
model = InlineModel
@admin.register(ParentModel)
class ParentModelAdmin(admin.ModelAdmin):
inlines = [InlineModelInline]
# 其他配置...
def save_related(self, request, form, formsets, change):
self.inline_instances = []
return super().save_related(request, form, formsets, change)
通过以上步骤,我们重写了内联对象的Admin类的save_related
方法,在保存相关对象时,会先保存主对象,然后再保存内联对象。
这种方式可以确保在Django Admin中强制保存内联对象。对于内联对象的保存,可以使用以下腾讯云相关产品进行支持:
请注意,以上只是一种实现方式,具体的实现方法可能因项目需求和版本差异而有所不同。
领取专属 10元无门槛券
手把手带您无忧上云