Python Django表格问题
我没有一个例子,因为我现在没有做任何相关的工作,但在阅读了关于表单集的文档之后,我仍然很好奇: 使用一个视图同时发布多个不同的模型表单(而不是一个组合表单,因为您不能同时发布多个表单,但由于缺乏更好的解释…),其中一些是单个模型表单,而另一些是一个或多个表单集)的最佳实践是什么(例如,Python Django表格问题,python,django,django-forms,Python,Django,Django Forms,我没有一个例子,因为我现在没有做任何相关的工作,但在阅读了关于表单集的文档之后,我仍然很好奇: 使用一个视图同时发布多个不同的模型表单(而不是一个组合表单,因为您不能同时发布多个表单,但由于缺乏更好的解释…),其中一些是单个模型表单,而另一些是一个或多个表单集)的最佳实践是什么(例如,Person,他的1个地址,以及他的1个或多个宠物对象),就像Django对tablerinline所做的那样。内联线在Django已经有一段时间了,所以我怀疑有比简单地复制/粘贴admin/options.py中
Person
,他的1个地址
,以及他的1个或多个宠物
对象),就像Django对tablerinline
所做的那样。内联线在Django已经有一段时间了,所以我怀疑有比简单地复制/粘贴admin/options.py
中的内容更好的做法,不是吗
提前感谢您应该:
- 确保您正在使用事务(因此,请确保它们已打开,并且您在MyISAM表中使用的不是MySQL)。这一直都是事实,但现在更是如此
- 使用多个
/表单.Form
对象,这些对象组合在一个HTML表单.ModelForm
元素中,例如
from django import forms
class FormA(forms.ModelForm):
[...]
class FormB(forms.ModelForm):
[...]
HTML:
作为免责声明,请记住这是一个基本的示例存根,并不意味着盲目复制。您对此的最终用例可能略有不同,这很好。谢谢您的回答。值得注意的还有formset()的
prefix
参数。
<form method="post" action="/path/to/view/">
{% csrf_token %}
{{ form_a }}
{{ form_b }}
<input type="submit" value="Submit Form" />
</form>
from django.db import transaction
from django.http import HttpResponseRedirect
from django.template.response import TemplateResponse
from myapp.forms import FormA, FormB
@transaction.commit_on_success
def present_forms_to_user(request):
if request.method == 'POST':
form_a = FormA(request.POST)
form_b = FormB(request.POST)
if form_a.is_valid() and form_b.is_valid():
# processing code
return HttpResponseRedirect('/path/to/thank/you/page/')
else:
form_a = FormA()
form_b = FormB()
return TemplateResponse(request, 'templates/eggs.html', {
'form_a': form_a,
'form_b': form_b,
})