2015-02-21 2 views
1

Я хочу передать набор форм в качестве аргумента функции и хочу проверить шаблон. Если вопрос неверен, пожалуйста, исправьте вопрос.Pass formet как аргумент функции в Django

Это моя функция:

def valid_check(*args): 
    valid = True 
    for arg in args: 
     if not arg.is_valid(): 
      valid = False 
    return valid 

valid = valid_check(form1,formset1,formset2) 
    if valid: 
     #do something 

Но это не работает, и показывает эту ошибку:

[u'ManagementForm data is missing or has been tampered with'] 

ответ

3

Похоже, ваши забыли вывести management_form с в шаблоне HTML или добавить prefix в формы:

formset1 = FormSet1(prefix='formset1') 
formset2 = FormSet2(prefix='formset2') 

А затем в темпе поздно:

{{ formset1.management_form }} 
{{ formset2.management_form }} 

UPDATE: на вопрос, заданный в комментариях:

Никогда не используйте if form.is_valid() and formset1.is_valid: заявление. Если значение form недействительно, проверка formset не будет выполняться. Таким образом, ваша функция valid_check() является гораздо более правильным решением - она ​​проверяет все пройденные формы/формы.

Но я предпочитаю использовать питон встроенный в all() функции:

if all([form.is_valid(), formset1.is_valid(), formset2.is_valid()]): 

В этом случае is_valid() вызывается для каждого вида/formset в строительстве списка и all() возвращается True только тогда, когда все формы являются действительными.

+0

спасибо большое @ catavaran – Thameem

+0

позвольте мне задать вопрос ... какой метод хорош .. написать функцию (пример выше функции) для проверки 4 набора форм или с помощью , если form.is_valid() и formset1.is_valid и formset.is_valid(): – Thameem

+0

благодарит за ваш ценный ответ и за ваше драгоценное время. :-) – Thameem

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