首页
学习
活动
专区
工具
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:提供安全、稳定、低成本的云存储服务,适用于存储和管理各种类型的数据。产品介绍链接

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

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

相关·内容

如何修改django的app在admin中显示的名称

django的开发中,很多时候我们希望app在admin中显示成我们想要的中文名,而不是显示默认的app_label名称。...默认会生成一个apps.py文件,类似: # blog/apps.py # -*- coding: utf-8 -*- from __future__ import unicode_literals from django.apps...在导入app时,django会检查每个在INSTALLED_APPS中的app的default_app_config变量,如果没有设置,django会使用基类AppConfig,因此我们只需要在init.py...init__.py default_app_config = 'blog.apps.BlogConfig' # 注:上面的路径根据自己的app所在的路径填写 通过以上两步,即可实现自定义app在admin...经过以上步骤的操作,在自带的admin 和 xadmin 中都能显示出来 ? 自带的admin中的显示效果 ?

3.3K10
  • Djangoadmin后台使用富文本编辑器,保存数据之后,还要在html页面展示

    目录 admin后台使用富文本编辑器 CKEditor 实现的效果 CKEditor的安装 在setting.py中的下面几个配置 关于CKEditor的路由 使用 前端如何使用 admin后台使用富文本编辑器...,如果没有图片存储或者使用自定义存储位置,那么则直接写 ' ' ,如果是使用django本身的存储方式,那么你就指名一个目录用来存储即可。...需要注意的是,如果使用django自带的存储,那么路径是一个相对路径,它相对与你设置的的MEDIA_ROOT。...ckeditor.fields.RichTextField 不支持上传文件的富文本字段 ckeditor_uploader.fields.RichTextUploadingField 支持上传文件的富文本字段; 例如: 前端如何使用...登录admin后台,使用富文本编辑器就可以进行保存数据了,保存到数据库中,就是一大段的html标签弄出的代码 查询出这个字段,在页面直接展示就可以 {% autoescape off %

    1.2K20

    自定义 Django 管理界面中的多对多内联模型

    问题背景在 Django 管理界面中,用户可以使用内联模型来管理一对多的关系。但是,当一对多关系是多对多时,Django 提供的默认内联模型可能并不适合。...具体步骤如下:创建一个新的内联模型类。这个类继承自 admin.TabularInline 或 admin.StackedInline。在新的内联模型类中,重写 get_formset() 方法。...下面是一个示例代码,演示了如何自定义多对多内联模型的显示方式:from django.contrib import adminfrom django.contrib.admin.utils import...ModelAdmin 类中admin.site.register(Invoice, InvoiceAdmin)在上面的代码中,我们首先创建了一个新的内联模型类 InvoiceProductFormset...这个类继承自 admin.BaseInlineFormSet。

    11510

    Django Admin后台管理:高效开发与实践

    通过这一章的学习,你将对Django Admin有基本的了解,并能够开始使用它来管理你的数据模型。后续章节将深入探讨如何定制和扩展Admin以满足项目需求。...使用内联模型:在父模型的Admin类中添加内联模型,如inlines = [RelatedModelInline]。...通过这一章的学习,你将能够更深入地定制Django Admin,使其更符合你的项目需求,并提供更好的用户体验。后续章节将进一步探讨如何使用Django Admin处理更复杂的场景和需求。...通过这一章的学习,你将能够掌握Django的认证系统,并学会如何管理用户、组和权限,以及如何自定义用户模型和用户界面。这些知识对于构建安全、可扩展的Web应用程序至关重要。...后续章节将进一步探讨如何结合Django的其他功能来构建复杂的应用程序。

    16910

    django 1.8 官方文档翻译: 2-5-6 多数据库

    这个例子的目的是演示如何使用路由这个基本结构来改变数据库的使用。它有意忽略一些复杂的问题,目的是为了演示如何使用路由。...当保存在statement 2中发生时,p已经具有一个主键,Django 将尝试在新的数据库上使用该主键。...实例来注册: from django.contrib import admin # Specialize the multi-db admin objects for use with specific...在第一个站点上,Author 和 Publisher 对象被暴露出来;Publisher 对象具有一个表格的内联,显示该出版社出版的书籍。第二个站点只暴露Publishers,而没有内联。...然而,如果你正在使用SQLite 或MySQL的MyISAM 表,则没有强制性的引用完整性;结果是你可以‘伪造’跨数据库的外键。但是Django 官方不支持这种配置。

    1.5K20

    django:DateTimeField如何自动设置为当前时间并且能被修改 ——django日期时间字段的使用

    DateTimeField.auto_now 这个参数的默认值为false,设置为true时,能够在保存该字段时,将其值设置为当前时间,并且每次修改model,都会自动更新。...需要注意的是,设置该参数为true时,并不简单地意味着字段的默认值为当前时间,而是指字段会被“强制”更新到当前时间,你无法程序中手动为字段赋值;如果使用django再带的admin管理器,那么该字段在admin...与auto_now类似,auto_now_add也具有强制性,一旦被设置为True,就无法在程序中手动为字段赋值,在admin中字段也会成为只读的。 ?...admin.site.register(Tag, YourAdmin) 如何将创建时间设置为“默认当前”并且可修改 那么问题来了。...timezone.now对应着django.utils.timezone.now(),因此需要写成类似下面的形式: from django.db import models import django.utils.timezone

    7.2K80

    Hcode网站的搭建日记(三)django数据库模型类与后台管理admin

    一、配置数据库 为了创建实际的项目,我们需要将文章信息保存至mysql数据库。Django默认使用SQLite数据库,所以我们需要在配置文件中修改默认数据库。...每一个字段都是Field类的一个实例,例如用于保存字符数据的CharField和用于保存时间类型的DateTimeField,它们告诉Django每一个字段保存的数据类型。...注意:超级用户的密码要求具备一定的复杂性,如果密码强度不够,Django会提示你,但是可以强制通过。 2....进入admin站点 利用刚才建立的admin账户,登陆admin,你将看到如下的界面: ? 当前只有两个可编辑的内容:用户和组。它们是django.contrib.auth模块提供的身份认证框架。...最后 下篇文章将介绍如何使用Ajax技术实现对静态网页动态统计阅读量

    64530

    django 扩展user用户字段inlines方式

    from django.contrib import admin from django.contrib.auth.models import User from .models import Profile...class ProfileInline(admin.StackedInline): #将Profile加入到Admin的user表中,内联 model = Profile can_delete...(User) #去掉在admin中的注册 admin.site.register(User, UserAdmin) #用UserAdmin注册user 补充知识:Django model onetoonefield...的工作模式 onetonoefield,就是一对一机制,每一条信息对应其他关联表的一条信息,记录标识为信息的id,且该键为主键 用法: 1、取值 例:User为Django自带User表,需要关联详细信息表...所筛选的条件在给的范围内 __gt = # 筛选的大于指定的值 __gte = # 筛选的大于等于指定的值 __lt = # 筛选的值小于指定的值 __lte = # 筛选的值小于等于指定的值 以上这篇django

    77220

    django 1.8 官方文档翻译: 2-3-1 模型实例参考

    无论如何,如果你这么做了,小心不要改变了调用签名——任何改变都可能阻碍模型实例被保存。尝试使用下面这些方法之一,而不是重写init: 1....出现这种情况的原因,请参见下面的Django 如何知道是UPDATE 还是INSERT。 显式指定自增主键的值对于批量保存对象最有用,但你必须有信心不会有主键冲突。 当你保存时,发生了什么?...空的update_fields 可迭代对象将会忽略保存。如果为None 值,将执行所有字段上的更新。 指定update_fields 将强制使用更新操作。...Django 在许多地方都使用unicode(obj)(或者相关的函数 str(obj))。最明显的是在DjangoAdmin 站点显示一个对象和在模板中插入对象的值的时候。...在Python 3 中,Django 在许多地方使用str(obj)。 最明显的是在DjangoAdmin 站点显示一个对象和在模板中插入对象的值的时候。

    1.9K10
    领券