繁体   English   中英

Django - 动态添加字段

[英]Django - Add field to form dynamically

目标:通过按下按钮动态地向表单添加字段。 提交后,将这些值存储在列表中的所有字段中。

(我已经查看了Stack Overflow上的其他问题,并试图找到一个基本的教程/解释如何执行此操作: 动态向表单添加字段

我不确定我需要查找/研究什么。 我知道它将涉及JavaScript,但它的Django方面,我不确定它将如何工作。

我为初学者创建了一个基本表单:

在此输入图像描述

Models.py

from django.db import models

class SimpleForm(models.Model):
    basic_field = models.CharField(max_length=200)

Forms.py

from django import forms
from models import SimpleForm

class SimpleForm(forms.ModelForm):

class Meta:
    model = SimpleForm
    fields = ['basic_field']

Views.py

from django.shortcuts import render
from forms import SimpleForm

def index(request):
    if request.method == "POST":
        # For loop to iterate over dynamically created fields
        # Store values in list
    else:
        form = SimpleForm()
    return render(request, "index.html", {'form':form})

的index.html

{% block content %}
    <h1>Simple Form</h1>
    <form method="POST" class="post-form">{% csrf_token %}
        {{ form.as_p }}
        <button type="button" class="btn-default">Add Another Field</button>
        <button type="submit" class="btn-default">Submit</button>
    </form>
{% endblock %}

尝试使用django-formsets 你可以从这个简洁的教程开始。

基本上,您需要做的是在views.py中从表单中创建一个formset。

    from django.forms.formsets import formset_factory
    CompoundFormset = formset_factory(SimpleForm,max_num=10,extra=1)

在这里你有一个片段,没有javascript这样做:

https://djangosnippets.org/snippets/10524/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM