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

django在表单提交后添加外键值

在Django中,可以通过以下步骤在表单提交后添加外键值:

  1. 首先,确保你已经定义了包含外键字段的模型。假设你有两个模型:ParentModelChildModel,并且ChildModel有一个外键字段指向ParentModel
代码语言:python
代码运行次数:0
复制
from django.db import models

class ParentModel(models.Model):
    # 父模型字段

class ChildModel(models.Model):
    parent = models.ForeignKey(ParentModel, on_delete=models.CASCADE)
    # 子模型字段
  1. 在视图函数中,处理表单提交的逻辑。你可以使用request.POST获取表单数据,并将其与外键值一起保存到数据库中。
代码语言:python
代码运行次数:0
复制
from django.shortcuts import render, redirect
from .forms import YourForm  # 导入你的表单类
from .models import ParentModel, ChildModel

def your_view(request):
    if request.method == 'POST':
        form = YourForm(request.POST)
        if form.is_valid():
            parent = ParentModel.objects.create()  # 创建父模型实例
            child = form.save(commit=False)
            child.parent = parent  # 设置外键值
            child.save()  # 保存子模型实例
            return redirect('success')  # 重定向到成功页面
    else:
        form = YourForm()
    return render(request, 'your_template.html', {'form': form})

在上述代码中,我们首先创建了父模型的实例parent,然后使用commit=False参数保存了子模型的实例child,接着将父模型实例赋值给子模型的外键字段child.parent,最后保存子模型实例。

  1. 创建一个表单类,用于处理表单的验证和展示。
代码语言:python
代码运行次数:0
复制
from django import forms
from .models import ChildModel

class YourForm(forms.ModelForm):
    class Meta:
        model = ChildModel
        fields = '__all__'

在上述代码中,我们使用ModelForm来创建表单类,并指定了要使用的模型和字段。

这样,当用户提交表单时,Django会自动创建父模型实例,并将其外键值赋给子模型的外键字段,从而实现在表单提交后添加外键值的功能。

关于Django的更多信息和详细介绍,你可以参考腾讯云的相关产品和文档:

请注意,以上仅为示例,具体的产品选择和配置应根据实际需求进行。

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

相关·内容

django admin详情表单显示中添加自定义控件的实现

开发中有需求详情显示里外键字段内容,并且添加按钮弹窗内容,以及按钮跳转内容。...form自带了widget控件,比如我想在里面添加一个按钮,记录用户的积分消耗情况,那么就可以类名下直接添加: from django.forms import widgets class AForm...这个时候我们就可以详情内看见button了,但是相对应的,detail的表单添加add的表单中也会出现一个button,这个不是我们想要的,所以就要想办法让button只存在于detail界面中...补充知识:Django admin 列表每行后面添加审核按钮 我就废话不多说了,还是直接看代码吧!...刷新页面即可; 以上这篇django admin详情表单显示中添加自定义控件的实现就是小编分享给大家的全部内容了,希望能给大家一个参考。

4.9K20
  • django后台添加学生-jquery实现表单正则表达式验证,判断是否可以进行提交

    话不多说,先放图 左边的导航就不放代码了,需要再问 (1)视图模板 (2)路由(urls.p) (3)views.py # GET:向服务器 获取 数据 # POST:向服务器 提交 数据 # 添加学生...StudentInfo.objects.create(name=name, sex=sex, chinese=chinese, math=math, english=english, total=total) # redirect提交完成自动跳转...跳转回你的页面列表 # return redirect("跳转别人的网站地址") return redirect('/stu/list/') (4)models.py 你的模型要先搞好才能方便表单需要添加什么...上添加分页html 用ul>li,方便css的编写, .you是右边的页面的大盒子,漏出底色(灰),区分我没有给出的左边导航栏.zuo .container是包着整个表单,同时把页面居中,漏出底色...// 设置属性:attr("属性", "属性值") .val:获取当前表单的输入值 // 点击提交表单触发 $(".sub").click(function() {

    10210

    Django查询优化及ajax编码格式原理解析

    ,并且键字段的类型只能是一对一或一对多,内部是联表操作,会将键关联的表与当前表直接拼接起来,然后再执行查询操作,返回的结果也是一个queryset,列表套数据对象,该数据对象获取当前表中的数据或者关联表中的数据...request.POST中; formdata form表单发送文件必须要指定的编码格式 该编码格式既可以发文件也可以发普通的键值django后端自动识别,将内部符合urlencoded编码格式的数据...后端针对json格式的数据,不会做任何处理,原封不动的放request.body内 ajax发送文件(不单单可以发送文件,也可以发送普通键值对) 建议借助原生js的内置对象帮你做数据携带 1)....先生成一个内置对象 var MyFormData = new FormData(); 2).然后朝该对象内添加数据(普通键值对和文件均可) 普通键值对 MyFormData.append(‘name...能够识别; processData:false, # 浏览器不需要对数据进行任何处理 django能够识别对象中的普通的键值对和文件对象,然后分别放到不同的方法POST和FILES中; 以上就是本文的全部内容

    1.6K10

    Django数据库查询优化与AJAX

    select_related()括号内放多个键字段,逗号隔开,会将多个键字段关联的表与当前表拼成一张大表。...同步交互:客户端发出一个请求,需要等待服务器响应结束,才能发出第二个请求; 异步交互:客户端发出一个请求,无需等待服务器响应结束,就可以发出第二个请求。...enctype设置成 multipart/form-data,这样form表单发送文件的时候就采用formdata的格式进行编码。...先添加普通的键值 MyFormData.append('username','ylpb'); // 添加了一组普通的简直对,append后面第一个参数是键,第二个参数是值...后端可以自动识别MyFormData(我们自己生成的内置对象)中的普通键值和文件,普通键值放在request.POST里面,文件放在request.FILES里面。

    2.4K20

    Django 2.1.7 视图 - HttpReqeust对象、QueryDict对象

    视图的第一个参数必须是HttpRequest对象,django.http模块中定义了HttpRequest对象的API。 属性 下面除非特别说明,属性都是只读的。...浏览器中给出地址发出请求采用get方式,如超链接。 浏览器中点击表单提交按钮发起请求,如果表单的method设置为post则为post请求。...session:一个既可读又可写的类似于字典的对象,表示当前的会话,只有当Django 启用会话的支持时才可用。 运行服务器,浏览器中浏览首页,可以浏览器“开发者工具”中看到请求信息如下图: ?...问:表单form如何提交参数呢? 答:表单控件name属性的值作为键,value属性的值为值,构成键值提交。 如果表单控件没有name属性则不提交。...对于checkbox控件,name属性的值相同为一组,被选中的项会被提交,出现一键多值的情况。 键是表单控件name属性的值,是由开发人员编写的。 值是用户填写或选择的。

    1.5K20

    Django 1.10中文文档-第一个应用Part4-表单和通用视图

    这意味着,当有人选择一个单选按钮并提交表单提交时,它将发送一个POST数据choice=#,其中# 为选择的Choice的ID。...Django为你提供了一个简单的方法来避免这个困扰,那就是form表单添加一条{% csrf_token %}标签,标签名不可更改,固定格式,位置任意,只要是form表单内。...现在,创建一个Django视图来处理提交的数据,Part3中已经创建了一个URLconf ,包含这一行: # polls/urls.py url(r'^(?...将下面的代码添加到polls/views.py: # polls/views.py from django.shortcuts import get_object_or_404, render from... 现在,浏览器中访问/polls/1/然后为Question投票。应该看到一个投票结果页面,并且每次投票都会更新。 如果提交时没有选择任何Choice,应该会看到错误信息。

    2.4K40

    关于“Python”的核心知识点整理大全55

    我们不想让用户与管理网站交互,因此我 们将使用Django表单创建工具来创建让用户能够输入数据的页面。 19.1.1 添加新主题 首先来让用户能够添加新主题。...用于添加主题的表单 让用户输入并提交信息的页面都是表单,那怕它看起来不像表单。用户输入信息时,我们需 要进行验证,确认提供的信息是正确的数据类型,且不是恶意的信息,如中断服务器的代码。...然 ,我们再对这些有效信息进行处理,并将其保存到数据库的合适地方。这些工作很多都是由 Django自动完成的。...Django中,创建表单的最简单方式是使用ModelForm,它根据我们第18章定义的模型中 的信息自动创建表单。...由于实例化TopicForm时我们没有指定任何实参,Django将创建一个可供用户 填写的空表单。 如果请求方法为POST,将执行else代码块,对提交表单数据进行处理。

    16110

    关于“Python”的核心知识点整理大全56

    1处, 我们定义了一个HTML表单。实参action告诉服务器将提交表单数据发送到哪里,这里我们将 它发回给视图函数new_topic()。...3处,我们显示表单,从中可知Django使得完 成显示表单等任务有多简单:我们只需包含模板变量{{ form.as_p }},就可让Django自动创建显 示表单所需的全部字段。...修饰符as_p让Django以段落格式渲染所有表单元素,这是一种整洁地显 示表单的简单方式。 Django不会为表单创建提交按钮,因此我们4处定义了一个这样的按钮。 6....用于添加新条目的表单 我们需要创建一个与模型Entry相关联的表单,但这个表单的定制程度比TopicForm要高些: forms.py from django import forms from...2处,我们定义了属性widgets。小部件(widget)是一个HTML表单元素,如单行文本框、 多行文本区域或下拉列表。通过设置属性widgets,可覆盖Django选择的默认小部件。

    13510

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

    这一部分将介绍 django 自带的后台管理系统,以及如何通过表单提交数据 django admin 后台管理系统 在后台管理系统注册创建的模型 from django.contrib import admin...admin 管理界面 为了可以和用户进行交流,我们需要获取用户的一些评论之类的,所以我们需要通过表单让用户提交信息,接下来我们将了解下 django表单 django 表单 存在相应模型(POST...方式) 1.应用文件夹下创建 forms.py 文件存放表单 from django import forms from .models import Post # 表单类必须继承 forms.ModelForm...提交表单错误 不存在对应模型(POST 方式) 1. forms.py 中创建表单 # 假设有个信息反馈的表单 class ContractForm(forms.Form): subject...提交反馈错误 类似搜索的表单(GET) 1.创建表单视图 def search(request): # 获取到用户提交的搜索关键词,字典的键值同模版中的 name 属性值 q = request.GET.get

    2.9K20

    django中ModelForm多表单组合的解决方案

    django表单的支持力度非常大,我们用不着浏览器端的html文件里写大量代码,再到web端去匹配form里的id/name/value、验证规则,再与持久层数据库比较并做操作。..._save_m2m()           else:       #注意,本篇文章主要用到commit=False这个参数,它会返回Model实例,允许我们修改instanceinstance...这里仅以CreateView为例说明,因为它相对最复杂,接下来的多ModelForm的提交也是CreateView上进行的。...比如CreateView就会由django自动的把页面上POST出的form数据解析到model生成的表单(或者form_calss指定的ModelForm类型表单),同时调用表单的save方法将数据添加到模型对应的数据库表中...所以,从模型创建出的表单ModelForm,配合上通用视图,威力巨大!! 4、多个ModelForm一个form里提交 终于可以回到本文的主题了。

    3.4K20

    Django—视图

    浏览器中给出地址发出请求采用get方式,如超链接。 浏览器中点击表单提交按钮发起请求,如果表单的method设置为post则为post请求。...问:表单form如何提交参数呢? 答:表单控件name属性的值作为键,value属性的值为值,构成键值提交。 如果表单控件没有name属性则不提交。...对于checkbox控件,name属性的值相同为一组,被选中的项会被提交,出现一键多值的情况。 键是表单控件name属性的值,是由开发人员编写的。 值是用户填写或选择的。...上去 四、HttpResponse对象 视图接收请求并处理,必须返回HttpResponse对象或子对象。django.http模块中定义了HttpResponse对象的API。...上去 4.2 子类HttpResponseRedirect 当一个逻辑处理完成,不需要向客户端呈现数据,而是转回到其它页面,如添加成功、修改成功、删除成功显示数据列表,而数据的列表视图已经开发完成,

    4.5K20

    Django 博客实现简单的全文搜索

    整个搜索的过程如下: 用户搜素框中输入搜索关键词,假设为 “django”,然后用户点击了搜索按钮提交其输入的结果到服务器。...form> 特别注意这里 中的 name 属性,当用户在这个 input 中输入搜索内容并提交表单...,键入的数据会以键值对的形式提交服务器,这个键的名字就是通过 name 属性指定的。...用户输入了搜索关键词并点击了搜索按钮,数据就被发送给了 Django 后台服务器。...接下来我们做了一个小小的校验,如果用户没有输入搜索关键词而提交表单,我们就无需执行查询,我们给给用户发一条错误提醒消息,这里使用了 django messages 应用,这在 交流的桥梁:评论功能中讲过

    70220

    Django MVT之V

    浏览器中给出地址发出请求采用get方式,如超链接。 浏览器中点击表单提交按钮发起请求,如果表单的method设置为post则为post请求。...如果键不存在则返回空列表[],也可以设置默认值进行后续处理 dict.getlist('键', 默认值) 处理表单 以一个登陆demo做示例讲解,首先添加login.html,内容如下 <!...默认开启csfr防御,提交表单时会返回403错误,这里不作介绍csrf,后续会在讲解模板的文章中介绍) settings.py中注释掉下面这行 配置url映射 urlpatterns = [...不需要向客户端呈现数据,而是转回到其它页面,如添加成功、修改成功、删除成功显示数据列表,此时就需要模拟一个用户请求的效果,从一个视图转到另外一个视图,就称为重定向。...django默认将Session信息存储在当前连接数据库的django_session数据表中。 注: Session工作流程由Django框架自动完成。 Session的特点: 以键值对方式存储。

    1.9K20

    零基础使用Django2.0.1打造在线教育网站(十一):登录页面实现

    登录页面,我们发现它其实是一个表单: [c0qdk17w6t.png] 我们打开login.html文件,找到第70行代码: [31c5ukx70s.png] 这就是我们刚才的登录时的表单提交页面,...把第70行的action指向修改一下:action="login.html"变成:action="/login/",还有这里面input中的name值都会随着表单提交被传递到后台,并以键值对的形式进行存储...我们现在再来测试一下,看看获取登录提交表单时的method是不是为post,只保留第一行位置上的断点: [hb600ixnmx.png] 然后开启debug模式,待网站首页显示出来以后点击登录按钮,并在表单中输入之前的信息...users/views.py文件添加如下代码: from django.contrib.auth import authenticate, login # 当我们配置的url被这个view处理时,将会自动传入...,并在表单中输入之前的信息,点击提交,页面跳到Pycharm中来: [r2k1tn0on3.png] [zhr1j5uso6.png] 可以看到我们已经成功登录了!

    1.7K10

    Django基础篇-请求

    HttpRequest 对象 HttpResponse 对象 ① HttpRequest 对象 服务器接收到 http 协议的请求,会根据 报文 创建 HttpRequest 对象视图函数的第一个参数是...HttpRequest 对象 django.http 模块中定义了 HttpRequest 对象的 API。...encoding:一个字符串,表示提交的数据的编码方式;如果为 None,则表示使用浏览器的默认设置,一般为 utf-8,这个属性是可写的,可以通过修改它来修改访问表单数据使用的编码,接下来对属性的任何访问将使用新的...session:一个既可读又可写的类似于字典的对象,表示当前的会话,只有当 Django 启用会话支持时才可用。...,构成键值提交; 对于 checkbox 控件,name 属性一样为一组,当控件被选中后会被提交,存在一键多值的情况。

    44320
    领券