2016-08-23 3 views
1

Предположим, у меня есть объект Contact, и я хочу иметь две группы контактных форм в django (1.8), деленные на fieldset тег в html-шаблоне. Я использую modelformset_factory. Независимо от того, что я использую одну или две разные заводские функции, поля в этих двух формах имеют одинаковый идентификатор в html. Поскольку http.Request.body является словарем, я теряю информацию об одном из двух форм.Как различать формы в django при использовании modelformset_factory?

contacts_formset = modelformset_factory(
    models.Contact, 
    form=forms.ContactDetailForm, 
    extra=2) 

contacts_escalation_formset_new = contacts_formset(
    queryset=models.Contact.objects.none()) 

contacts_other_formset_new = contacts_formset(
    queryset=models.Contact.objects.none()) 

в HTML:

input id="id_form-0-name" maxlength="155" name="form-0-name" type="text" 
input id="id_form-0-name" maxlength="155" name="form-0-name" type="text" 

Для простой формы Джанго, есть ключевое слово "префикс = ...". Но эта фабричная функция не имеет этого аргумента. Как я могу это решить?

ответ

2

Класс modelformset_factory возвращает класс FormSet. Этот класс FormSet имеет необязательный аргумент prefix, аналогичный классам Form.

contacts_escalation_formset_new = contacts_formset(
    prefix='escalation', 
    queryset=models.Contact.objects.none(), 
) 

contacts_other_formset_new = contacts_formset(
    prefix='other' 
    queryset=models.Contact.objects.none(), 
) 

См. Документы на using more than one formset in a view для другого примера.

+0

Это было быстро. И это правильно. Я просто попал на ту же страницу django. – WojtylaCz

Смежные вопросы