在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中文件I/O高效操作处理的技巧分享
Feb 04 Python
Python内置函数 next的具体使用方法
Nov 24 Python
查看Django和flask版本的方法
May 14 Python
python实现抖音视频批量下载
Jun 20 Python
使用Python如何测试InnoDB与MyISAM的读写性能
Sep 18 Python
PyQt5图形界面播放音乐的实例
Jun 17 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
Aug 29 Python
python异步编程 使用yield from过程解析
Sep 25 Python
python3常用的数据清洗方法(小结)
Oct 31 Python
Python socket连接中的粘包、精确传输问题实例分析
Mar 24 Python
python利用递归方法实现求集合的幂集
Sep 07 Python
Python中三维坐标空间绘制的实现
Sep 22 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
终于听上了直流胆调频
2021/03/02 无线电
php 代码优化的42条建议 推荐
2009/09/25 PHP
详解WordPress中添加友情链接的方法
2016/05/21 PHP
Centos PHP 扩展Xchche的安装教程
2016/07/09 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
2017/03/13 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
javascript实现图像循环明暗变化的方法
2015/02/25 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
学习JavaScript设计模式之中介者模式
2016/01/14 Javascript
JavaScript使用键盘输入控制实现数字验证功能
2016/08/19 Javascript
javascript中href和replace的比较(详解)
2016/11/25 Javascript
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
基于JavaScript实现带缩略图的轮播效果
2017/01/12 Javascript
js实现数组去重方法及效率?Ρ? target=
2017/02/14 Javascript
JavaScript 对引擎、运行时、调用堆栈的概述理解
2018/10/22 Javascript
JS使用iView的Dropdown实现一个右键菜单
2019/05/06 Javascript
Vue实现固定定位图标滑动隐藏效果
2019/05/30 Javascript
JQuery样式与属性设置方法分析
2019/12/07 jQuery
让mocha支持ES6模块的方法实现
2020/01/14 Javascript
python刷投票的脚本实现代码
2014/11/08 Python
Python用Bottle轻量级框架进行Web开发
2016/06/08 Python
利用python实现命令行有道词典的方法示例
2017/01/31 Python
pytorch中tensor的合并与截取方法
2018/07/26 Python
python实现WebSocket服务端过程解析
2019/10/18 Python
python调用百度API实现人脸识别
2020/11/17 Python
巧克力领导品牌瑞士莲美国官网:Lindt Chocolate美国
2016/08/25 全球购物
Melijoe英国官网:法国儿童时尚网站
2016/11/18 全球购物
世界上最大的字体市场:MyFonts
2020/01/10 全球购物
运动会通讯稿400字
2014/01/28 职场文书
中介业务员岗位职责
2014/04/09 职场文书
森林防火标语
2014/06/23 职场文书
五一活动标语
2014/06/30 职场文书
介绍信格式
2015/01/30 职场文书
征求意见函
2015/06/05 职场文书
文明礼貌主题班会
2015/08/14 职场文书
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers