在django view中给form传入参数的例子


Posted in Python onJuly 19, 2019

在django的form表单会出现,在form的验证或者保存时需要非form中的field的信息参数。例如在对操作进行记录,我们需要根据将记录的操作人设置为当前的用户,所以在view中我们需要将user的信息传入到form中,方便在form.save()d的方法使用。

models

# models.py

from django.db import models
from django.contrib.auth.models import User


class Record(models.Model):

 user = models.ForeignKey(User, on_delete=models.CASADE, verbose_name='操作者')
 operate = models.CharField(max_length=20, verbose_name='操作')

我们创建一个record模型,里面有user以及operate2个field。

forms

# forms.py

from django import forms

from .models import Record


class RecordForm(forms.ModelForm):

 def __init__(self, *args, **kwargs):
  self.user = kwargs.pop('user')
  super().__init__(*args, **kwargs)

 def save(self, commit=True):
  instance = super().save(commit=False)
  instance.user = self.user
  if commit:
   instance.save()
  return instance

 class Meta:
  model = Record
  fields = ['operate', ]

在form中我们首先使用ModelForm方便我们对将表单直接转化为model并保存。我们在__init__方法中将传入的user保存为参数,并在save方法中取出并使用。

views

# views.py

from django.views.generic import FormView

from .forms import RecordForm


class RecordView(FormView):
 form_class = RecordForm

 def get_form_kwargs(self):
  kwargs = super().get_form_kwargs()
  kwargs.update({
   'user': self.request.user,
  })
  return kwargs

 ...

我们在get_form_kwargs传入user的参数变量,这样form中就可以获得这一参数。

以上这篇在django view中给form传入参数的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python循环语句中else的用法总结
Sep 11 Python
python 爬虫 批量获取代理ip的实例代码
May 22 Python
更改Python的pip install 默认安装依赖路径方法详解
Oct 27 Python
python 提取tuple类型值中json格式的key值方法
Dec 31 Python
详解numpy的argmax的具体使用
May 27 Python
python实现多进程按序号批量修改文件名的方法示例
Dec 30 Python
使用tensorflow显示pb模型的所有网络结点方式
Jan 23 Python
使用keras实现densenet和Xception的模型融合
May 23 Python
利用Python实现斐波那契数列的方法实例
Jul 26 Python
python中xlutils库用法浅析
Dec 29 Python
python使用XPath解析数据爬取起点小说网数据
Apr 22 Python
Python爬虫:从m3u8文件里提取小视频的正确操作
May 14 Python
使用Python制作表情包实现换脸功能
Jul 19 #Python
解决Django一个表单对应多个按钮的问题
Jul 18 #Python
Django工程的分层结构详解
Jul 18 #Python
django mysql数据库及图片上传接口详解
Jul 18 #Python
解决django中ModelForm多表单组合的问题
Jul 18 #Python
浅谈Django中view对数据库的调用方法
Jul 18 #Python
django-rest-framework解析请求参数过程详解
Jul 18 #Python
You might like
虫族 Zerg 历史背景
2020/03/14 星际争霸
分页显示Oracle数据库记录的类之二
2006/10/09 PHP
php Notice: Undefined index 错误提示解决方法
2010/08/29 PHP
PHP页面跳转操作实例分析(header方法)
2016/09/28 PHP
PHP实现计算器小功能
2020/08/28 PHP
用jQuery实现一些导航条切换,显示隐藏的实例代码
2013/06/08 Javascript
JS分页控件 可用于无刷新分页
2013/07/23 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
2015/10/10 Javascript
封装获取dom元素的简单实例
2016/07/08 Javascript
javascript鼠标跟随运动3种效果(眼球效果,苹果菜单,方向跟随)
2016/10/27 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
2017/01/19 Javascript
jQuery表单元素选择器代码实例
2017/02/06 Javascript
AngularJS实现根据不同条件显示不同控件
2017/04/20 Javascript
javascript数组拍平方法总结
2018/01/20 Javascript
vue列表数据发生变化指令没有更新问题及解决方法
2020/01/16 Javascript
[02:24]DOTA2亚洲邀请赛 NAVI战队出场宣传片
2015/02/07 DOTA
python中map、any、all函数用法分析
2015/04/21 Python
启动targetcli时遇到错误解决办法
2017/10/26 Python
一道python走迷宫算法题
2018/01/22 Python
详解Python的循环结构知识点
2019/05/20 Python
pytorch: Parameter 的数据结构实例
2019/12/31 Python
4款Python 类型检查工具,你选择哪个呢?
2020/10/30 Python
K近邻法(KNN)相关知识总结以及如何用python实现
2021/01/28 Python
修复iPhone的safari浏览器上submit按钮圆角bug
2012/12/24 HTML / CSS
Mountain Warehouse澳大利亚官网:欧洲家庭户外品牌倡导者
2016/11/20 全球购物
最新计算机专业自荐信
2013/10/16 职场文书
军训自我鉴定
2013/12/14 职场文书
培训讲师邀请函
2014/01/10 职场文书
《三个小伙伴》教学反思
2014/04/11 职场文书
医院节能减排方案
2014/06/13 职场文书
预防传染病方案
2014/06/14 职场文书
植树节标语
2014/06/27 职场文书
材料物理专业求职信
2014/09/01 职场文书
教师节晚会主持词
2015/06/30 职场文书
五年级作文之成长
2019/09/16 职场文书