2017-06-23 12 views
0

私はフォームを持っています。これは私のテンプレートの入れ子のforループの中で呼びます。一意のidフォームフィールドdjan​​go

ここ

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なし)forms.pyです:

{{ category.name }} 
{{ category.description }} 
{% for subcat in category.foreign_category.all %} 
    {{ subcat.name }} 
    {{ subcat.description }} 
    <form role="form" id="{{ subcat.id }}" action="{% url 'auth_sub_category_item_add' %}" method="POST"> 
     {% csrf_token %} 
     {{ sub_category_item_form }} 
     <button type="submit">Save</button> 
    </form> 
{% endfor %} 

問題: 私は知りませんフォームフィールドIDを一意に設定する方法。サブフォームにはこのフォームが最大15個ある可能性があります。具体的には、記述フォームフィールドには固有のIDが必要です。フォームの投稿や節約、しかしCKEditorWidgetから迷惑なjsのエラーを取得しては:

Uncaught The editor instance "id_description" is already attached to the provided element. 

私はJSを編集することによって、これを抑制することができますが、動的にフィールドIDを設定するにはどのような方法があるかどう知っていいだろう。

答えて

0

使用formsetsforms.py

views.py

from django.forms import formset_factory 

SubCategoryItemFormSet = formset_factory(SubCategoryItemForm) 

TE中
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) 

mplate:

<form role="form" id="{{ category.id }}" action="{% url 'auth_sub_category_item_add' %}" method="POST"> 
    <table> 
     {{ categories_formset }} 
    </table> 
</form> 

viewであなただけの1つのサブカテゴリ、FormSet完了していないに対処する必要がありますのでご注意ください。 Djangoはフォームの各要素のマッピングを行います。

さらに、ModelFormSetを使用することもできます。

+0

それは素晴らしいです、私はあなたの例からソートしました。非常に感謝、親指アップ! – John

関連する問題