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

如何在UpdateView post方法中手动更新外键字段?

在UpdateView的post方法中手动更新外键字段,可以通过以下步骤实现:

  1. 首先,在你的视图类中继承UpdateView,并定义好模型和表单类。
  2. 在post方法中,首先调用父类的post方法,以确保原有的更新逻辑得以执行。
  3. 然后,获取需要更新的外键字段的值。可以通过request.POST或者其他途径获取到这个值。
  4. 接下来,通过self.object属性获取到当前正在更新的对象。
  5. 最后,使用获取到的外键字段的值,更新self.object的外键字段。

以下是一个示例代码:

代码语言:txt
复制
from django.views.generic.edit import UpdateView
from .models import YourModel
from .forms import YourForm

class YourUpdateView(UpdateView):
    model = YourModel
    form_class = YourForm
    template_name = 'your_template.html'
    success_url = '/success_url/'

    def post(self, request, *args, **kwargs):
        response = super().post(request, *args, **kwargs)

        # 获取外键字段的值
        foreign_key_value = request.POST.get('foreign_key_field')

        # 更新外键字段
        self.object.foreign_key_field = foreign_key_value
        self.object.save()

        return response

在这个示例中,我们首先调用了父类的post方法,确保原有的更新逻辑得以执行。然后,通过request.POST获取到外键字段的值。接着,通过self.object获取到当前正在更新的对象,并使用获取到的外键字段的值,更新外键字段。最后,返回父类post方法的返回值。

需要注意的是,示例中的'foreign_key_field'需要替换为你实际的外键字段名。另外,还需要根据你的具体情况修改模型、表单类、模板和成功跳转的URL。

希望以上内容能够帮助到你!如果有任何疑问,请随时提问。

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

相关·内容

django 1.8 官方文档翻译: 3-4-3 使用基于类的视图处理表单

使用基于类的视图处理表单 表单的处理通常有3 个步骤: 初始的的GET (空白或预填充的表单) 带有非法数据的POST(通常重新显示表单和错误信息) 带有合法数据的POST(处理数据并重定向) 你自己实现这些功能经常导致许多重复的样本代码...Changed in Django 1.8: 省略fields 属性在以前是允许的,但是导致表单带有模型的所有字段。...在这个例子: CreateView 和UpdateView 使用 myapp/author_form.html DeleteView 使用 myapp/author_confirm_delete.html...首先,向模型添加关联: #models.py from django.contrib.auth.models import User from django.db import models class...在这个视图中,请确保你没有将created_by 包含进要编辑的字段列表,并覆盖form_valid() 来添加这个用户: #views.py from django.views.generic.edit

1.8K20

Django内置的通用类视图CBV及示例

参数,如果找到了这个参数,该方法使用这个参数的值执行一个基于逐渐的查询.如果这个参数没有找到,该方法查找slug_url_kwarg参数,使用slug_field字段执行针对slug的查询.当query_pk_and_slug...: get_context_data(**kwargs): (未填写属性和方法的使用同上) 5.UpdateView ?...显示用于编辑现有对象的表单的视图,重新显示具有验证错误信息的视图,并且保存对象.这里使用从对象模型自动生成的表单(除非手动制定表单类)....该视图用法与CreateView基本相同,仅在BaseUpdateView对get()和post()的内部实现有区别. 6.DeleteView ?...显示确认页面并删除现有对象的视图.仅当请求方法POST时,才会删除给定的内容.如果此视图是通过GET提取的,它将显示一个确认页面,其中包含POST到同一网址的表单.

3.2K10
  • 利用Django通用类视图(class

    更新UpdateView、创建CreateView、删除DeleteView这几个操作。...这个view只实现了get方法,它只接受get请求。也符合它用于查看数据的需求。在代码,我们只需要指定它对应的模板,对应的model就可以了。...在web开发约定俗成的规则是,对于查询类的请求用get,对于修改类的请求用post。Django在设计的时候也遵循了这个原则,所以以下的每个view,都具有支持get和post的函数。...CreateVIew: get——根据model提供一个空form post——接收从get发来的请求,数据合法性校验,插入数据库 UpdateView: get——根据model从数据库取出实例,并渲染...form post——接收从get来的请求,数据合法性校验,并更新数据库 CreateView 对应官网文档 view class SSHAuthCreateView(CreateView):

    1.5K20

    Django内置的通用类视图及实例

    参数,如果找到了这个参数,该方法使用这个参数的值执行一个基于逐渐的查询.如果这个参数没有找到,该方法查找slug_url_kwarg参数,使用slug_field字段执行针对slug的查询.当query_pk_and_slug...get_context_data(**kwargs): (未填写属性和方法的使用同上) 5.UpdateView ?...显示用于编辑现有对象的表单的视图,重新显示具有验证错误信息的视图,并且保存对象.这里使用从对象模型自动生成的表单(除非手动制定表单类)....该视图用法与CreateView基本相同,仅在BaseUpdateView对get()和post()的内部实现有区别. 6.DeleteView ?...显示确认页面并删除现有对象的视图.仅当请求方法POST时,才会删除给定的内容.如果此视图是通过GET提取的,它将显示一个确认页面,其中包含POST到同一网址的表单.

    2.9K40

    Laravel Eloquent 模型关联关系详解(上)

    到目前为止,我们介绍的所有 Eloquent 模型操作都是针对单表的,接下来我们将花三篇左右的篇幅来给大家介绍如何在 Eloquent 模型类建立模型之间的各种关联关系,以及如何实现关联查询和更新。...,第二个参数是关联模型类所属表的,这里对应的是 user_profiles 表的 user_id 字段,第三个参数是关联表的关联到当前模型所属表的哪个字段,这里对应的是 users 表的 id...第二个参数是当前模型类所属表的,在本例是 user_profiles 表的 user_id 字段,拼接规则和 hasOne 那里类似,只不过这里是基于第四个参数关联关系名称 $relation:...$instance->getKeyName(); } $relation 默认约定是对应关联关系方法名,这里的是 user。如果你这里定义的方法名不是 user,则需要手动指定参数。...第四个参数 relatedPivotKey 是中间表当前关联模型类的,拼接规则和 foreignPivotKey 一样,只不过作用于关联模型类,所以在本例是 tags 表的 tag_id 字段

    9.9K40

    djangoModelForm多表单组合的解决方案

    django模型是谁,在fields告诉django需要在表单创建哪些字段。...View是所有视图类的父类,根据方法名分发请求到具体的get或者post方法,提供as_view方法。...注意,它会在post请求判断表单是否可用,is_valid为真时,会调用form_valid方法,因此,重写form_valid方法是第4部分处理多model到一个form的关键。...True时调用该方法       def form_valid(self, form):           #首先我们要获取到PrimeContractForm表单对应的模型,此时是不能save的,因为...POST里得到的表单           context = self.get_context_data()           #按照四条数据库记录的顺序依次的创建(调用save方法)、主键赋到下一条记录的

    3.4K20

    MySQL 常见的面试题及其答案

    5、什么是是一种用于建立两个表之间关联的字段通常指向另一个表的主键。 6、什么是索引? 索引是一种用于加速查询的数据结构。它可以使得数据库在查找数据时更快地定位到需要的数据。...触发器是一种特殊的存储过程,它可以在数据库特定的操作(插入、更新、删除等)发生时自动执行。触发器可以用于强制实施业务规则、自动化复杂的业务逻辑等。 11、什么是存储过程?...在MySQL,只有使用InnoDB存储引擎才支持事务,MyISAM存储引擎不支持事务。 23、如何在MySQL实现约束? MySQL实现约束可以使用FOREIGN KEY约束。...MySQL实现约束的方法: 在创建表时,使用FOREIGN KEY约束指定,指向另一个表的主键。 约束可以在CREATE TABLE或ALTER TABLE语句中指定。...如果试图插入与另一个表不存在的,则会拒绝插入操作。 可以使用CASCADE选项来自动删除或更新具有关联记录的记录。 24、什么是MySQL存储引擎?MySQL支持哪些存储引擎?

    7.1K31

    django rest framework serializers解读

    label=’验证码’ help_text: 在指定字段增加一些提示文字,这两个字段作用于api页面比较有用 style: 说明字段的类型,这样看可能比较抽象,看下面例子: # 在api页面,...我们在mixins的博客中提及到,post请求对应create方法,而patch请求对应update方法,这里提到的create方法与update方法,是指mixins特定类方法。...attrs['order_sn'] = generate_order_sn() return attrs 这个方法运用在modelserializer,可以剔除掉write_only的字段,这个字段只验证...好处 ModelSerializer已经重载了create与update方法,它能够满足将post或patch上来的数据进行进行直接地创建与更新,除非有额外需求,那么就可以重载create与update...讲了那么多,终于要研究一下啦~ 其实,的field也比较简单,如果我们直接使用serializers.Serializer,那么直接用PrimaryKeyRelatedField就解决了。

    1.8K10

    【MySQL】:约束全解析

    本文将深入介绍MySQL的各种约束类型及其使用方法,包括非空约束、唯一约束、主键约束、默认约束、检查约束和约束,以及如何在创建表和修改表时添加约束,以及约束的相关知识。 一....具体的删除/更新行为有以下几种: 行为 说明 NO ACTION 当在父表删除/更新对应记录时,首先检查该记录是否有对应,如果有则不 允许删除/更新。...(与 RESTRICT 一致) 默认行为 RESTRICT 当在父表删除/更新对应记录时,首先检查该记录是否有对应,如果有则不 允许删除/更新。...(与 NO ACTION 一致) 默认行为 CASCADE 当在父表删除/更新对应记录时,首先检查该记录是否有对应,如果有,则 也删除/更新在子表的记录。...、分类、使用方法约束的相关知识。

    21910

    「Strve.js@2.x正式发布与做open source的一些感受」从90%到100%这个过程真难!

    另外又借鉴了React框架的“All in JS”以及异步更新数据的思想。最后,它们两个框架都使用了虚拟DOM来提升性能,那么我们也可以引入虚拟DOM机制。...任何在列表头部操作的动作,unshift、pop数组方法都需要加上这个useFkey字段。其他操作则不需要这样,内部已经进行了优化。...你需要在Vue实例挂载完成后被调用Strve()注册方法,并且第一个参数已经在template标签存在。...开始 尝试 Strve Router 最简单的方法是使用直接导入 CDN 链接。您可以在浏览器打开它并按照示例学习一些基本用法。 <!...匹配到相应的路径页面会相应的更新,所以这里必须注册一个routerHashUpdate()方法,然后第一个参数传入updateViewAPI,第二个参数则是一个自定义方法

    1.6K20

    Django数据库查询优化与AJAX

    : res = models.Book.objects.all()#只有当我们使用res时才会执行数据库查询的操作 all、only与defer all 拿到自己的所有的属性,但是没有与其他表建立的属性...,特点:内部自动连表操作,会将括号内外字段所关联的表与当前表自动拼接成一张表,然后将表的数据一个一个查询出来封装成一个一个的对象。...select_related()括号内放多个字段,逗号隔开,会将多个字段关联的表与当前表拼成一张大表。...,特点:按步骤查询多张表,然后将查询结果封装到对象,给用户的感觉好像还是连表操作,括号内支持传多个字段,每放一个字段就会多走一条SQL语句,多查一张表。...AJAX 不是新的编程语言,而是一种使用现有标准的新方法。 AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。

    2.4K20

    为什么数据库不应该使用

    根据更新和删除时的行为不同,我们可以将分成 RESTRICT、CASCADE 和 SET NULL 等几种[^4],当我们为关系表字段增加约束时,需要指定的类型,最常见的也就是 RESTRICT...接下来我们会详细介绍关系型数据库如何处理上述两种不同类型的,而我们应该如何在应用模拟这些功能。...,这个过程相对比较麻烦,不过也是为了实现完整性的必要代价,不过这种模拟方法其实远比使用更消耗资源,它不仅需要查询关联数据,还要通过网络发送更多的数据包。...在数据库之外手动实现的功能是可能的,但是却会带来很多维护上的成本或者需要我们在数据一致性上做出一些妥协。...: RESTRICT 会在更新和删除关系表的数据时对外约束的合法性进行检查,保证不会引用到不存在的记录; CASCADE 会在更新和删除关系表的数据时触发对关联记录的更新和删除,在数据量较大的数据库可能会有数量级的放大效果

    3.1K10

    能不能手写Vue响应式?前端面试进阶

    Vue 视图更新原理Vue 的视图更新原理主要涉及的是响应式相关API Object.defineProperty 的使用,它的作用是为对象的某个属性对外提供 get、set 方法,从而实现外部对该属性的读和写操作时能够被内部监听...响应式监听 data 的 nameObject.defineProperty(data, "name", { // 使用 data.name 时 get 方法被调用,返回内部存储变量值 get...1、updateView为了方便 模拟视图更新,这里创建了一个函数 updateView ,当数据更新时,调用 updateView ,模拟进行了视图更新(在 Vue 中表现为 template 模板引用了该变量值的...定义了一个对象,然后在程序执行过程给他动态添加了属性,然后对当我们对该新增属性进行值更新时并没有触发视图更新,作为Vue初学者时,将 data 响应式当成黑盒对待,就很难理解它为啥不更新,而今天拨开原理后...1、定义监听数组的原型我们都知道,在 JS ,任何对象都有原型,而我们的目的是通过重写数组原型上方法(push、pop等)实现监听,而作为库或是框架,我们都不应该去改变全局原型上的任何原生方法或者属性

    59720

    PHP_MySQL笔试题目一

    1、表单get和post提交方式有何区别? 答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息. 2.session与cookie的区别?...答:echo strrev($a); 7、优化MYSQL数据库的方法。...$id”); mysql_query(“COMMIT”); 5、锁定表,优化事务处理: a.我们用一个 SELECT 语句取出初始数据,通过一些计算,用 UPDATE 语句将新值更新到表。...$id); mysql_query(“UNLOCK TABLES”); 6、使用,优化锁定表 a.把customerinfo里的customerid映射到orderinfo里的customerid...order 表的该用户的所有记录,注意使用要定义事务安全类型为INNODB; 7、建立索引: a.格式: (普通索引)-> 创建:CREATE INDEX ON tablename (

    75330

    马哥金牌分享 | 十分钟学会用Django快速搭建一个blog

    但是在Django,控制器接受用户输入的部分由框架自行处理,所以Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为MTV模式。...视图(View)表现层 处理与表相关的决定: 如何在页面或其他类型文档中进行显示。 模板(Template),业务逻辑层 存取模型及调取恰当模板的相关逻辑。模型与模板的桥梁。...表之间是否需要进行关联?...2.配置admin.py之前,需要先了解一下admin的用法 需要继承admin.ModelAdmin list_display:admin 后台显示的字段 search_fields:admin 后台查询的字段...的视图 Django有很多的优秀的视图: View DetailView ListView FormView CreateView DeleteView UpdateView 我们的blog里面暂时只用到了

    2.4K51

    Android-Widget重装上阵

    应用被动更新Widget 产品现在重新开始重视Widget的一个重要原因,实际上就是App内部卷不动了,Widget可以在不打开App的情况下,对App进行引流,所以,应用的Widget更新,就是一个很重要的组成部分...RemoteViews行为 RemoteViews不像普通的View,所以我们不能像写普通布局的方式一样来操纵View,但RemoteViews提供了一些set方法来帮助我们对RemoteViews的...封装了一系列跨进程通信的方法,简化了我们的调用,这也是为什么RemoteViews不支持全部的View方法的原因,RemoteViews抽象了一系列的set方法,并将它们抽象为统一的Action接口,这样就可以提供跨进程通信的效率...所以,我们一般不会把网络请求直接写在AppWidgetProvider,一个比较好的方式,就是通过Service来进行更新。 首先我们创建一个Service,用来进行后台请求。...https://juejin.cn/post/7048623673892143140 Widget的使用场景主要还是以实用功能为主,只有让用户觉得有用,才能锦上添花给App带来更多的活跃,否则只能是鸡肋

    1.2K32

    简易评论系统设计

    用户邮箱created_timeDATETIME创建时间updated_timeDATETIME更新时间deleted_timeDATETIME删除时间帖子表t_post字段名数据类型描述post_idBIGINT...帖子ID,主键user_idBIGINT发帖用户ID,,引用User表的user_idtitleVARCHAR帖子标题contentTEXT帖子内容post_timeDATETIME发帖时间comment_countINT...count(*)评论表t_comment字段名数据类型描述comment_idBIGINT评论ID,主键user_idBIGINT评论用户ID,,引用User表的user_idpost_idBIGINT...所评论的帖子ID,,引用Post表的post_idparent_comment_idBIGINT父评论ID,如果是一级评论,此字段为NULLreply_to_comment_idBIGINT被回复的评论...性能设计缓存设计热门数据缓存:对于访问频率高的数据,热门帖子的评论,可以将其缓存到内存使用Redis等内存数据库。当用户请求这些数据时,可以直接从缓存获取,而不需要查询数据库。

    23610
    领券