唯一id表单字段django
我有一个表单,我在模板中的嵌套for循环中调用它 这是forms.py唯一id表单字段django,django,django-forms,django-ckeditor,Django,Django Forms,Django Ckeditor,我有一个表单,我在模板中的嵌套for循环中调用它 这是forms.py class SubCategoryItemForm(forms.Form): paragraf = forms.CharField(widget=forms.TextInput(attrs={'class' : 'form-control'}), required=True, label="Paragraf") name = forms.CharField(widget=forms.TextInput(att
class SubCategoryItemForm(forms.Form):
paragraf = forms.CharField(widget=forms.TextInput(attrs={'class' : 'form-control'}), required=True, label="Paragraf")
name = forms.CharField(widget=forms.TextInput(attrs={'class' : 'form-control'}), required=True)
description = forms.CharField(widget=CKEditorWidget(attrs={'class' : 'form-control'}), required=True)
views.py
def category_view(request, cat_id):
category = Category.objects.get(id=cat_id)
context = {"category": category, "sub_category_item_form": SubCategoryItemForm()}
return render(request, 'registered/category.html', context=context)
在模板中(不含html):
我可以通过编辑js来抑制这一点,但是如果知道是否有任何方法可以动态设置字段id,那就太好了。您应该使用一个formset,它可以为多个表单生成唯一的id 这里是Django表单集的文档
您应该使用一个表单集,该表单集将处理为多个表单生成唯一ID的操作 这里是Django表单集的文档 使用: 在
forms.py
中:
from django.forms import formset_factory
SubCategoryItemFormSet = formset_factory(SubCategoryItemForm)
def category_view(request, cat_id):
category = Category.objects.get(id=cat_id)
categories_formset = SubCategoryItemFormSet(initial=category.foreign_category.all().values())
context = {"category": category, "categories_formset": categories_formset}
return render(request, 'registered/category.html', context=context)
在视图.py中
:
from django.forms import formset_factory
SubCategoryItemFormSet = formset_factory(SubCategoryItemForm)
def category_view(request, cat_id):
category = Category.objects.get(id=cat_id)
categories_formset = SubCategoryItemFormSet(initial=category.foreign_category.all().values())
context = {"category": category, "categories_formset": categories_formset}
return render(request, 'registered/category.html', context=context)
在模板中:
<form role="form" id="{{ category.id }}" action="{% url 'auth_sub_category_item_add' %}" method="POST">
<table>
{{ categories_formset }}
</table>
</form>
{{categories\u formset}}
请注意,在视图中
需要处理完整的表单集
,而不仅仅是一个子类别。Django负责映射表单中的每个元素
更好的是,您可以使用。使用:
在forms.py
中:
from django.forms import formset_factory
SubCategoryItemFormSet = formset_factory(SubCategoryItemForm)
def category_view(request, cat_id):
category = Category.objects.get(id=cat_id)
categories_formset = SubCategoryItemFormSet(initial=category.foreign_category.all().values())
context = {"category": category, "categories_formset": categories_formset}
return render(request, 'registered/category.html', context=context)
在视图.py中
:
from django.forms import formset_factory
SubCategoryItemFormSet = formset_factory(SubCategoryItemForm)
def category_view(request, cat_id):
category = Category.objects.get(id=cat_id)
categories_formset = SubCategoryItemFormSet(initial=category.foreign_category.all().values())
context = {"category": category, "categories_formset": categories_formset}
return render(request, 'registered/category.html', context=context)
在模板中:
<form role="form" id="{{ category.id }}" action="{% url 'auth_sub_category_item_add' %}" method="POST">
<table>
{{ categories_formset }}
</table>
</form>
{{categories\u formset}}
请注意,在视图中
需要处理完整的表单集
,而不仅仅是一个子类别。Django负责映射表单中的每个元素
更好的是,您可以使用。在这个实例中,您似乎并不需要使用唯一的ID。如果您没有收集用于每个表单字段的id,那么您只需在表单实例化中调用
auto\u id=False
,以确保没有字段添加自动id属性
例如:
def category_view(request, cat_id):
# note auto_id=False
form = SubCategoryItemForm(auto_id=False)
category = Category.objects.get(id=cat_id)
context = {"category": category, "sub_category_item_form": form}
return render(request, 'registered/category.html', context=context)
Django文档对此进行了描述:
在这个实例中,您似乎并不需要使用唯一的ID。如果您没有收集用于每个表单字段的id,那么您只需在表单实例化中调用
auto\u id=False
,以确保没有字段添加自动id属性
例如:
def category_view(request, cat_id):
# note auto_id=False
form = SubCategoryItemForm(auto_id=False)
category = Category.objects.get(id=cat_id)
context = {"category": category, "sub_category_item_form": form}
return render(request, 'registered/category.html', context=context)
Django文档对此进行了描述:
太棒了,我从你的例子中得到了分类。非常感谢,竖起大拇指!太棒了,我从你的例子中得到了分类。非常感谢,竖起大拇指!