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

如何在打开模型项编辑/更改页面时自动修改django模型对象的值?

在打开模型项编辑/更改页面时自动修改Django模型对象的值,可以通过以下步骤实现:

  1. 创建一个自定义的Django表单类,继承自ModelForm,用于编辑/更改模型对象的表单。
  2. 在表单类中,重写__init__方法,通过传入模型对象的实例,将模型对象的值填充到表单字段中。
  3. 在视图函数中,获取要编辑/更改的模型对象实例,并将其传递给自定义表单类的实例化对象。
  4. 在模板中,使用自定义表单类的实例化对象渲染表单字段,以显示模型对象的当前值。
  5. 当用户提交表单时,通过表单的cleaned_data属性获取用户修改后的值,并将其更新到模型对象中。

下面是一个示例代码,演示如何在打开模型项编辑/更改页面时自动修改Django模型对象的值:

代码语言:txt
复制
# forms.py
from django import forms
from .models import YourModel

class YourModelForm(forms.ModelForm):
    class Meta:
        model = YourModel
        fields = '__all__'

    def __init__(self, *args, **kwargs):
        instance = kwargs.get('instance')
        if instance:
            initial = kwargs.get('initial', {})
            for field in self.Meta.fields:
                initial[field] = getattr(instance, field)
            kwargs['initial'] = initial
        super().__init__(*args, **kwargs)

# views.py
from django.shortcuts import render, get_object_or_404
from .forms import YourModelForm
from .models import YourModel

def edit_model(request, model_id):
    instance = get_object_or_404(YourModel, id=model_id)
    if request.method == 'POST':
        form = YourModelForm(request.POST, instance=instance)
        if form.is_valid():
            form.save()
            # 处理保存成功后的逻辑
    else:
        form = YourModelForm(instance=instance)
    return render(request, 'edit_model.html', {'form': form})

# edit_model.html
<form method="post">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit">保存</button>
</form>

在上述示例中,YourModel是你的模型类,YourModelForm是自定义的表单类。在表单类的__init__方法中,通过传入的模型对象实例,将模型对象的值填充到表单字段中。在视图函数edit_model中,通过get_object_or_404获取要编辑/更改的模型对象实例,并将其传递给表单类的实例化对象。在模板中,使用{{ form.as_p }}渲染表单字段,以显示模型对象的当前值。当用户提交表单时,通过form.save()将修改后的值更新到模型对象中。

这样,当打开模型项编辑/更改页面时,表单字段将自动填充模型对象的值,用户可以直接修改并保存。

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

相关·内容

django 1.8 官方文档翻译: 1-2-2 编写你第一个Django应用,第2部分

哲理 为你员工或客户生成添加、修改和删除内容管理性网站是个单调乏味工作。 出于这个原因,Django 根据模型完全自动化创建管理界面。... poll 进行编辑: 这有些注意事项: 这表单是根据 Poll 模型自动生成。...页面的底部还为你提供了几个选项: Save – 保存更改并返回到当前类型对象更改列表页面。 Save and continue editing – 保存更改并重新载入当前对象管理界面。...你将看到一页列出了通过 Django 管理界面对此对象所做全部更改清单页面, 包含有时间戳和修改姓名等信息: 自定义管理表单 花些时间感叹一下吧,你没写什么代码就拥有了这一切。...这样的话你就需要在注册对象 告诉 Django 对应配置。 让我们来看看如何编辑表单上给字段重新排序。

2.5K40

Django 1.10中文文档-第一个应用Part2-模型和管理站点

我们将设置数据库,创建您第一个模型,并快速介绍Django自动生成管理网站。 数据库设置 现在,编辑mysite/settings.py。...Django admin管理站点介绍 为您员工或客户生成管理网站用来添加,更改和删除内容是繁琐工作,不需要太多创造力。因此,Django完全自动创建模型管理界面。...页面的底部,则是一些可选项按钮: Save —— 保存更改,并返回当前类型对象变更列表界面; Save and add another:保存当前修改,并加载一个新空白的当前类型对象表单...; Save and continue editing:保存当前修改,并重新加载该对象编辑页面; delete:弹出一个删除确认页面 如果“Date published”字段和你在前面教程创建它时候不一致...然后点击右上角“History”按钮。 你将看到一个页面,列出了通过Django管理界面对此对象所做全部更改清单,包含有时间戳和修改姓名等信息: ?

2.3K60
  • Django 3.1 官网学习路线

    第二部分 设置数据库,创建您第一个模型,并快速介绍 Django 自动生成管理网站。 数据库设置 打开 Django_study / settings.py。...__str__()方法非常重要,这不仅是为了方便您在处理交互式提示使用,而且因为 Django 自动生成管理员中都使用了对象表示形式。...页面的底部提供了几个选项: 保存-保存更改并返回此类型对象更改列表页。 保存并继续编辑——保存更改并重新加载此对象管理页面。 保存并添加另一个——保存更改并为这种类型对象加载一个新空白表单。...通常,您需要定制管理表单外观和工作方式。可以通过注册对象告诉 Django 所需选项来实现。 通过重新排列编辑表单中字段来了解其工作原理。...:“选择对象问题管理页面编辑

    8.2K10

    走进 model

    前言 本篇将介绍Django如何建立数据库,如何创造你第一个模型,还会接触到Django自带后台管理系统, 数据库配置 数据库连接 打开 demo_proj/settings.py,Django 项目的配置都在此...先来关注下 INSTALLED_APP配置,我们Django项目中所有的应用对会包括在此(上篇文章创建 demo_app也要手动加到这配置里)。...打开 demo_app中models.py 文件,修改代码如下: ? Cat 类 我们定义了 __str__()方法,这个方法用来有什么作用,大家可以自己找找答案。...Django 管理后台 Django 为我们提供了功能强大后台。在后台中,我们可以利用Django自带功能对定义对象进行添加,修改,和删除。...点击Cat,系统就会跳转Cat 对象列表页面,我们刚才演示操作API 新建 Cat 对象也在此 ? 点击 miaomiao 就进入到编辑页面 ? 编辑和删除功能都能实现。

    95310

    Admin站点

    AppConfig.verbose_name 属性用于设置该应用直观可读名字,此名字Django提供Admin管理站点中会显示, 注册模型类 登录后台管理后,默认没有我们创建应用中定义模型类...列表页中点击某行第一列可以进入修改页。 ? 按照提示进行内容修改修改成功后进入列表页。修改页点击“删除”可以删除一。 ? 删除:列表页勾选想要删除复选框,可以删除多项。...将方法作为列 列可以是模型字段,还可以是模型方法,要求方法有返回。 通过设置short_description属性,可以设置admin站点中显示列名。...关联对象 无法直接访问关联对象属性或方法,可以模型类中封装方法,访问关联对象成员。...关联对象 一对多关系中,可以一端编辑页面编辑多端对象,嵌入多端对象方式包括表格、块两种。 类型InlineModelAdmin:表示模型编辑页面嵌入关联模型编辑

    2.1K20

    Django 上传图片和Admin站点5.2

    /media/cars/图片文件” 打开settings.py文件,增加media_root MEDIA_ROOT=os.path.join(BASE_DIR,"static/media") 使用django...中加入django.contrib.admin,Django就会自动搜索每个应用admin模块并将其导入 ModelAdmin对象 ModelAdmin类是模型Admin界面中表示形式 定义:定义一个类...,继承于admin.ModelAdmin,注册模型使用这个类 class HeroAdmin(admin.ModelAdmin): ......类型InlineModelAdmin:表示模型添加或修改页面嵌入关联模型添加或修改 子类TabularInline:以表格形式嵌入 子类StackedInline:以块形式嵌入 class...编辑base_site.html文件 刷新页面,发现以刚才编辑页面效果显示 其它管理后台模板可以按照相同方式进行修改

    47230

    Django简介

    MVC与MTV模型 MVC Web服务器开发领域里著名MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式、松耦合方式连接在一起,模型负责业务对象与数据库映射...MTV分别是: M 代表模型(Model): 负责业务对象和数据库关系映射(ORM)。...django有一个好处,代码更改之后,它会自动加载代码。而不需要重启django项目,网页就能更新了!...执行视图函数login,响应请求给浏览器一个login.html页面 1.虽然formaction属性为"/auth/",但是执行提交动作,浏览器会查看action属性,如果为相对路径。...如果没有响应,就会报错 视图函数中,render是渲染意思。那么它是如何工作呢?

    1.7K20

    Django Admin后台管理

    Django通过简单配置就可以实现数据模型后台管理。一般管理界面是给系统管理员使用,以完成数据CURD。 1.本地化 将语言和时区本地化,修改settings.py文件。...打开应用下admin.py,注册模型类。...登陆后就会看到我们注册模型类,点进去后就可以实现对数据库CURD了。 4.自定义管理页面 Django提供了自定义管理页面的功能,是通过自定义模型管理类来实现。...admin.py创建一个admin.ModelAdmin子类,注册模型类时调用admin.site.register方法第二个参数中指定自定义模型管理类。...5.其他 富文本编辑器 后台管理员如果需要在后台编辑带样式文字,如编辑对商品详细信息描述,就需要使用富文本编辑器。这里以tinymce为例Django Admin后台中如何使用富文本编辑器。

    2.8K10

    后端框架学习-Django

    参数=&参数= 信息片段:#subject锚点,直接定位到网页指定位置 Django如何处理URL?...映射图: ORM———->DB 类———->数据表 对象——–>数据行 属性——–>字段 数据库迁移: 迁移是Django同步您对模型所做出更改(添加字段,删除模型等)到您数据库模式方式。...+ auto_now:每次保存对象自动设置该字段为当前时间(取值:True/False) + auto_now_add:当兑现第一次被创建自动设置当前时间(取值:True/False) + default...verbose_name:设置此字段admin界面上显示名称,可以中文化admin界面 好习惯:字段选项【添加或更改】均要执行 模型类-Meta内部类 使用Meta类来给**模型(其实就是表属性)...查(get())->改:通过对象.属性方式更改->保存:对象.save() 2.批量更新数据 直接调用QuerySetupdate(属性=实现批量修改) 针对QuerySet来做更改 删除操作

    9.5K40

    Django—入门

    1.定义模型模型类定义models.py文件中,继承自models.Model类。   说明:不需要定义主键列,在生成时会自动添加,并且自动增长。...同时我们发现多了一个id,这一Django框架帮我们自动生成创建表时候id就会作为对应表主键列,并且主键列自动增长。...列表页中点击某行第一列可以进入修改页。 ? 按照提示进行内容修改修改成功后进入列表页。修改页点击“删除”可以删除一。 删除:列表页勾选想要删除复选框,可以删除多项。 ?...点击执行后进入确认页面,删除后回来列表页面。 4.自定义管理页面 列表页只显示出了BookInfo object,对象其它属性并没有列出来,查看非常不方便。...Django提供了自定义管理页面的功能,比如列表页要显示哪些打开booktest/admin.py文件,自定义类,继承自admin.ModelAdmin类。

    1.9K10

    35.Django2.0文档

    第一次执行循环,该变量会被置为序列个数减1 forloop.first 是一个布尔,如果该迭代是第一次执行,那么它被置为```` {% for item in lists %}...该层处理与表现相关决定: 如何页面或其他类型文档中进行显示。   V:代表视图(View),即业务逻辑层。 该层包含存取模型及调取恰当模板相关逻辑。 你可以把它看作模型与模板之间桥梁。  ...以下示例演示如何将所有Publishercountry字段由’U.S.A’更改为’USA’: ? update()方法会返回一个整型数值,表示受影响记录条数。...,作者邮箱地址允许输入一个空  4.自定义字段标签      在编辑页面中,每个字段标签都是从模块字段名称生成。...另一个常用编辑页面自定义是针对多对多字段。 真如我们book编辑页面看到那样,`` 多对多字段`` 被展现成多选框。虽然多选框在逻辑上是最适合HTML控件,但它却不那么好用。

    11.3K100

    Django—常用功能

    配置静态文件 Django提供了一种配置,可以html页面中可以隐藏真实路径。 1)项目的settings.py文件中修改STATIC_URL。...我们来看看多个中间件Django如何执行其中process_request方法。...、缺乏创造力工作,为此,Django能够根据定义模型自动地生成管理模块。...在下拉列表中输出对象名称,可以模型类中定义str方法用于对象转换字符串。 1)打开booktest/models.py文件,修改AreaInfo类,添加str方法。...关联对象 一对多关系中,可以一端编辑页面编辑多端对象,嵌入多端对象方式包括表格、块两种。 类型InlineModelAdmin:表示模型编辑页面嵌入关联模型编辑

    2.7K30

    四、其它(一)ModelAdmin对象InlineModelAdmin对象重写admin模板Paginator对象Page对象示例

    中加入django.contrib.admin,Django就会自动搜索每个应用admin模块并将其导入 ModelAdmin对象 ModelAdmin类是模型Admin界面中表示形式 定义:定义一个类...类型InlineModelAdmin:表示模型添加或修改页面嵌入关联模型添加或修改 子类TabularInline:以表格形式嵌入 子类StackedInline:以块形式嵌入 class...编辑base_site.html文件 刷新页面,发现以刚才编辑页面效果显示 其它管理后台模板可以按照相同方式进行修改 五、分页 Django提供了一些类实现管理数据分页,这些类位于django/...:当向page()传入一个无效页码抛出 PageNotAnInteger:当向page()传入一个不是整数抛出 EmptyPage:当向page()提供一个有效,但是那个页面上没有任何对象抛出...: 修改settings.pyTEMPLATES,设置DIRS 'DIRS': [os.path.join(BASE_DIR, 'templates')], 定义模板文件:包含三个select标签

    4.5K20

    Django快速入门——投票程序(1、2)创建项目&模型

    You're at the polls index.") 2.polls/urls.py中创建映射。用户打开网站urlDjango能够调用views.index函数返回响应。...route:route是一个匹配URL准则(类似正则表达式)。 当Django响应一个请求,它会从urlpatterns第一开始,按顺序依次匹配列表中,直到找到匹配。...name:为你 URL 取名能使你 Django 任意地方唯一地引用它,尤其是模板中。这个有用特性允许你只改一个文件就能全局地修改某个 URL 模式。...第2部分(模型) 我们将设置数据库,创建第一个模型,并快速介绍Django自带后台界面。 数据库设置 打开 mysite/settings.py,它包含了Django项目设置。...注意在Choice模型中,我们使用ForeignKey定义了一个关系。这将告诉Django,每个Choice对象都关联到一个 Question对象

    29930

    django入门:Admin管理系统及表单(干货)

    这一部分将介绍 django 自带后台管理系统,以及如何通过表单提交数据 django admin 后台管理系统 在后台管理系统注册创建模型 from django.contrib import admin...admin 管理系统,登录账号密码就是我们第一部分通过命令行 createsuperuser所创建,登陆后我们可以找到站点管理,对模型进行管理操作 ?...list_editable = ['title', 'author'] # 排除一些不想被编辑 fields, 没有列表不可被编辑 fields = ('title..." # 修改 admin 页面头部标题 admin.site.site_title = "Blog Manager" 修改以后,我们界面可以看到是以下这样 ?...(request.POST) # 判断表单是否有效,django 自动校验表单数据是否合理,根据模型字段类型来判断 if form.is_valid():

    2.9K20

    django 学习笔记一

    polls 查看改动 python manage.py sqlmigrate polls 0001 修改模型models.py文件中)。...,可以操纵另外一个表,并且另外一个表外联 key 自动关联模型 primary key # create 后面的参数是创建另外一个表对象参数 # 则 choice 对象 id 自动关联 q...,如果有错误,无法正常重启,则浏览器中界面将会报错 进入登录界面 ---- 让我们自定义 APP 出现在界面中 站点注册一个模型,则页面中可直接显示,修改 admin.py from .models...通常,你会想要自定义管理界面中表单外观和功能。 你可以通过注册对象时候告知Django一些你想要选项来完成。 让我们通过对编辑表单上字段重新排序来看一下它是如何工作。...【说明】以下例子是可以更改排列顺序例子(更改编辑界面的顺序) admin.py 文件中 将admin.site.register(Question)行替换成: from .models import

    1K20

    Django 学习笔记 1.2 模型和 admin 站点

    前言 https://docs.djangoproject.com/zh-hans/2.2/intro/tutorial02/ 在这节里,我们将建立数据库,创建第一个模型,关注 Django 提供自动生成管理页面...换句话说,就是进行数据库相关操作,模型是数据库基础结构,管理页面又是对数据库进行可视化操作。 1 数据库 打开 mysite/settings.py 。...2 创建模型 Django 里写一个数据库驱动 Web 应用第一步是定义模型 - 也就是数据库结构设计和附加其它元数据。...这个 migrate 命令选中所有还没有执行过迁移(Django 通过在数据库中创建一个特殊django_migrations 来跟踪执行过哪些迁移)并应用在数据库上 - 也就是将你对模型更改同步到数据库结构上...4 初试 API 一旦创建 数据模型 后,Django 自动给予你一套数据库抽象 API,允许你创建,检索,更新和删除对象

    64610
    领券