动态添加字段到表单 python django
Dynamically add field to a form python django
我想要一个 Django 表单,用户可以在其中添加多个 stop_name、stop_longitude、stop_latitude 使用 在里面添加更多按钮。假设用户有 3 个 stop_name,因此他必须点击 添加更多 两次。并且每次添加更多以上字段时都会再次填充。
我是 Django 的新手,所以我需要一些帮助。
这是我的模型
class SupplyChainStops(models.Model):
ingredient = models.ForeignKey(Ingredients, null=True, on_delete=models.CASCADE)
stop_name = ArrayField(models.CharField(max_length=1024, null=True, blank=True))
stop_longitude = ArrayField(models.CharField(max_length=500, null=True, blank=True))
stop_latitude = ArrayField(models.CharField(max_length=500, null=True, blank=True))
Okey 使用 formset factory 我非常直接和简单地呈现多个字段供用户填写他们的信息。首先,您需要在项目中创建 forms.py,然后在表单中导入 django 的 formset_factory。我们会这样做:
from django.forms import formset_factory
from .models import SupplyChainStops
# Here we are creating a formset to handle the maniplations of our form to
# have extra field by using the extra parameter to formset_factory
# and also we can add a delete function to allow users to be able to delete
Formset = formset_factory(SupplyChainStops, fields=[' stop_name',' stop_longitude','stop_latitude'], extra=4, can_delete=True)
# I have set the formset to give us an extra field of four and enable users
# to delete
现在我们要处理视图来处理我们的表单集。
from django.views.generic.edit import FormView
from .forms import Formset
class formsetView( FormView):
template_name = 'formset.html'
form_class = Formset
success_url = '/'
在我们的模板中,我们将做这样的事情。
<form method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Add">
</form>
在函数基础视图中执行此操作
from .forms import Formset
def formset_view(request):
if request.method == 'POST':
formset = Formset(request.POST,)
if formset.is_valid():
formset.save()
else:
formset = ()
return render (request, 'formset.html',{'formset':formset})
在您的 HTML 模板中
<form method="post">{% csrf_token %}
{{ formset.as_p }}
<input type="submit" value="Add">
</form>
我想要一个 Django 表单,用户可以在其中添加多个 stop_name、stop_longitude、stop_latitude 使用 在里面添加更多按钮。假设用户有 3 个 stop_name,因此他必须点击 添加更多 两次。并且每次添加更多以上字段时都会再次填充。 我是 Django 的新手,所以我需要一些帮助。
这是我的模型
class SupplyChainStops(models.Model):
ingredient = models.ForeignKey(Ingredients, null=True, on_delete=models.CASCADE)
stop_name = ArrayField(models.CharField(max_length=1024, null=True, blank=True))
stop_longitude = ArrayField(models.CharField(max_length=500, null=True, blank=True))
stop_latitude = ArrayField(models.CharField(max_length=500, null=True, blank=True))
Okey 使用 formset factory 我非常直接和简单地呈现多个字段供用户填写他们的信息。首先,您需要在项目中创建 forms.py,然后在表单中导入 django 的 formset_factory。我们会这样做:
from django.forms import formset_factory
from .models import SupplyChainStops
# Here we are creating a formset to handle the maniplations of our form to
# have extra field by using the extra parameter to formset_factory
# and also we can add a delete function to allow users to be able to delete
Formset = formset_factory(SupplyChainStops, fields=[' stop_name',' stop_longitude','stop_latitude'], extra=4, can_delete=True)
# I have set the formset to give us an extra field of four and enable users
# to delete
现在我们要处理视图来处理我们的表单集。
from django.views.generic.edit import FormView
from .forms import Formset
class formsetView( FormView):
template_name = 'formset.html'
form_class = Formset
success_url = '/'
在我们的模板中,我们将做这样的事情。
<form method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Add">
</form>
在函数基础视图中执行此操作
from .forms import Formset
def formset_view(request):
if request.method == 'POST':
formset = Formset(request.POST,)
if formset.is_valid():
formset.save()
else:
formset = ()
return render (request, 'formset.html',{'formset':formset})
在您的 HTML 模板中
<form method="post">{% csrf_token %}
{{ formset.as_p }}
<input type="submit" value="Add">
</form>