首页 > 编程 > Python > 正文

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

2019-11-25 12:19:05
字体:
来源:转载
供稿:网友

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

models

# models.pyfrom django.db import modelsfrom django.contrib.auth.models import Userclass 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.pyfrom django import formsfrom .models import Recordclass 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.pyfrom django.views.generic import FormViewfrom .forms import RecordFormclass 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传入参数的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表