Python/Django如何在表单中通过模式提交表单?

2024-10-03 06:28:37 发布

您现在位置:Python中文网/ 问答频道 /正文

情景

我有两张表格。在我的例子中,我希望在第一个表单模板中通过模式提交第二个表单。相反,当我点击链接时会弹出模态,但当我点击submit按钮时,模态表单不会被提交,而主表单会被提交。我创建了一个模拟问题的最小化项目

代码

# models.py
class TestModel1(models.Model):
    name = models.CharField(max_length=20)

class TestModel2(models.Model):
    name = models.CharField(max_length=20)


# forms.py
class TestModel1Form(forms.ModelForm):
    class Meta:
        model = TestModel1
        fields = ["name", ]


class TestModel2Form(forms.ModelForm):
    class Meta:
        model = TestModel2
        fields = ["name", ]

# views.py
class TestModel1Create(CreateView):
    model = TestModel1
    form_class = TestModel1Form
    template_name = 'mytestapp/testmodel1_form.html'
    success_url = '/testmodel1/create'

class TestModel2Create(CreateView):
    model = TestModel2
    form_class = TestModel2Form
    template_name = 'mytestapp/testmodel2_form.html'
    success_url = '/testmodel1/create'

以下是“主”表单testmodel1_form.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/js/bootstrap.min.js"></script>

    <a href="/testmodel2/create/" class='li-modal'>Goto form 2</a>
    <div id="theModal" class="modal fade text-center">
        <div class="modal-dialog">
            <div class="modal-content"></div>
        </div>
    </div>

    <script>
        $('.li-modal').on('click', function(e){
            e.preventDefault();
            $('#theModal').modal('show').find('.modal-content').load($(this).attr('href'));
        });
    </script>

    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <input type="submit" value="Save">
    </form>
</body>
</html>

下面是模式表单testmodel2_form.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <input type="submit" value="Save">
    </form>
</body>
</html>

我寻找的

我希望这样做的方式是,在主窗体中,通过模态发布次窗体,然后重新加载主窗体


Tags: namedivform表单modeltitlemodelshtml