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
    /
    表单.ModelForm
    对象,这些对象组合在一个HTML
    元素中,例如

Python:

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,
    })