Python 如何使用从Django中以前提交的HTML表单中收到的数据预填充表单?
我正试图用我提交到上一个HTML页面(也是ModelForm)的一些数据填充我的ModelForm。 我只想把它传递到另一个表单,这样就不必写两次 我尝试过stackoverflow的两个解决方案,但它们已经有6年多的历史了,有点过时,而且也无法从django文档中找到解决方案 我有两个型号,它们有相同的字段,分别是Python 如何使用从Django中以前提交的HTML表单中收到的数据预填充表单?,python,html,django,Python,Html,Django,我正试图用我提交到上一个HTML页面(也是ModelForm)的一些数据填充我的ModelForm。 我只想把它传递到另一个表单,这样就不必写两次 我尝试过stackoverflow的两个解决方案,但它们已经有6年多的历史了,有点过时,而且也无法从django文档中找到解决方案 我有两个型号,它们有相同的字段,分别是name和boxid 我需要将它从第一个输入传递到第二个输入(以填充它) forms.py views.py addperson.html和addcashier.html {%ext
name
和boxid
我需要将它从第一个输入传递到第二个输入(以填充它)
forms.py
views.py
addperson.html和addcashier.html
{%extends“main/base.html”%}
{%block content%}
{%csrf_令牌%}
{{form.as_p}}
乌诺斯一号多达文杰预板
{%endblock%}
非常感谢您的帮助和/或提示。要预填充表单,您需要在初始化表单以进行
GET
调用时传递一个参数initial={}
。由于要将数据从一个视图传递到另一个视图,因此应该使用
然后在第二个视图中,使用会话中的这些数据初始化表单
def addcashier(request):
if request.method == 'GET':
# get the form data from the request.session
form_data = request.session.pop('person_form', {})
box_id = form_data.get("person_boxid")
name = form_data.get("person_name")
form = NewCashierForm(initial={"cashier_name":name, "cashier_boxid":box_id}) # initialize the form with the data
else:
form = NewCashierForm(request.POST)
if form.is_valid():
fs = form.save(commit=False)
fs.user = request.user
fs.save()
return redirect('/byauthor')
return render (request, 'main/addcashier.html', {'form':form})
Django的FormAPI在过去六年中没有任何变化,所以任何解决方案都应该仍然有效。感谢您提供的解决方案!它还帮助我了解其他事情。
def addcashier(request):
if request.method == 'GET':
form = NewCashierForm()
else:
form = NewCashierForm(request.POST)
if form.is_valid():
fs = form.save(commit=False)
fs.user = request.user
fs.save()
return redirect('/byauthor')
return render (request, 'main/addcashier.html', {'form':form})
def addperson(request):
if request.method == 'GET':
form = NewPersonForm()
else:
form = NewPersonForm(request.POST)
if form.is_valid():
fs = form.save(commit=False)
fs.user = request.user
fs.save()
return redirect('/addcashier')
return render (request, 'main/addperson.html', {'form':form})
{% extends "main/base.html" %}
{% block content %}
<form method="POST">
{% csrf_token %}
{{form.as_p}}
<button class="btn" type="submit">Unos i dodavanje pretplate</button>
</form>
<input type="button" value="Otkazi unos" onclick="window.history.back()" />
{% endblock %}
def addperson(request):
if request.method == 'GET':
form = NewPersonForm()
else:
form = NewPersonForm(request.POST)
if form.is_valid():
fs = form.save(commit=False)
fs.user = request.user
fs.save()
request.session["person_form"] = request.POST.dict() #save the form as a dict in request.sessions
return redirect('/addcashier')
return render (request, 'main/addperson.html', {'form':form})
def addcashier(request):
if request.method == 'GET':
# get the form data from the request.session
form_data = request.session.pop('person_form', {})
box_id = form_data.get("person_boxid")
name = form_data.get("person_name")
form = NewCashierForm(initial={"cashier_name":name, "cashier_boxid":box_id}) # initialize the form with the data
else:
form = NewCashierForm(request.POST)
if form.is_valid():
fs = form.save(commit=False)
fs.user = request.user
fs.save()
return redirect('/byauthor')
return render (request, 'main/addcashier.html', {'form':form})