首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何强制Django Admin保存内联?

在Django中,内联(Inline)是一种方便的方式来在Admin后台编辑相关模型的关联对象。默认情况下,内联对象在保存时不会自动保存,需要手动点击保存按钮。然而,有时候我们希望在保存主对象时同时保存内联对象,这就需要强制Django Admin保存内联。

要实现强制Django Admin保存内联,可以通过自定义Admin类和重写相关方法来实现。以下是一种常见的实现方式:

  1. 创建一个自定义的Admin类,继承自内联对象所属的父对象的Admin类。
代码语言:txt
复制
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()
  1. 在父对象的Admin类中,将内联对象的Admin类指定为自定义的Admin类。
代码语言:txt
复制
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中强制保存内联对象。对于内联对象的保存,可以使用以下腾讯云相关产品进行支持:

  1. 腾讯云数据库MySQL:提供高性能、可扩展的MySQL数据库服务,适用于存储和管理数据。产品介绍链接
  2. 腾讯云对象存储COS:提供安全、稳定、低成本的云存储服务,适用于存储和管理各种类型的数据。产品介绍链接

请注意,以上只是一种实现方式,具体的实现方法可能因项目需求和版本差异而有所不同。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券