Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 27, 2009 02:02:20

patriotyk
От:
Зарегистрирован: 2008-09-05
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

FormSet и initial data для extra форм??

Ferroman
Послушай “чувак”, следи за разговором.
Повторяю вопрос ещё раз, для медленных: Ты пробовал сделать так, как в моём посте? Твой код, от моего вообще ничем не отличается.
Конечно что пробовал.



Офлайн

#2 Сен. 27, 2009 11:39:29

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

FormSet и initial data для extra форм??

Странно. Можешь показать код, как пробовал?
Какая версия джанги?

Офлайн

#3 Сен. 28, 2009 15:46:50

patriotyk
От:
Зарегистрирован: 2008-09-05
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

FormSet и initial data для extra форм??

Ferroman
Странно. Можешь показать код, как пробовал?
Какая версия джанги?
Короче забей, я вижу ты не понимаешь что мне надо, а мне впадло третий раз обяснять.



Офлайн

#4 Сен. 28, 2009 18:08:17

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

FormSet и initial data для extra форм??

Нет, давай всё-таки разберёмся.
Твой вопрос:

все екстра форми в FormSet всегда пустые, а мне нужно чтобы некоторые поля в екстра форме были заполнены начальными значениями
Ответ есть в документации, я его тебе дал.

Ты же пишешь явный бред сивой кобылы, но с умным видом :
количество словарей в mx_data определяет количество форм в формсете, а екстра форм будет всегда то количситво которое указано в extra параметре и они будут пустые
После замечания, начинаешь нести какой-то маразм о
В дукументации про такую возможность не написано это значит что прямими методами оно не реализовуется, и пишу может ктонибудь знает какие нибуть трики как такое сделать.
Уже после того как я дал линк на документацию где написано как это сделать.

Вот твой код:
 MxFormSet = formset_factory(MXForm, extra=extra, can_delete=True)
c.mx_formset = MxFormSet(initial=mx_data)
Ты говоришь что добавление словарей для эктра-форм в initial, как я и ответил во втором посте, не добавляет начальные значения экстра формам.
Ты же утверждаешь что пробовал так делать.
Значит ты либо лжёшь и не пробовал, либо не достаточно описал задачу.
Я же попробовал:
>>> from django import forms
>>> from django.forms.formsets import formset_factory
>>> class MXForm(forms.Form):
... MX = forms.CharField()
... name = forms.CharField()
>>> extra = 6
>>> MxFormSet = formset_factory(MXForm, extra=extra)
>>> # делаем инициирующие словари
>>> mx_data = MxFormSet(initial=[{'name':'main record', 'MX':'main mx'},{'name':'extra initial', 'MX':''}, {'name':'extra init 2', 'MX':'extra form init 2'}])
>>> mx_formset = MxFormSet(initial=mx_data)
>>> for form in mx_formset.forms:
... print form.as_table()
...
<tr><th><label for="id_form-0-MX">MX:</label></th><td><input type="text" name="form-0-MX" value="main mx" id="id_form-0-MX" /></td></tr>
<tr><th><label for="id_form-0-name">Name:</label></th><td><input type="text" name="form-0-name" value="main record" id="id_form-0-name" /></td></tr>
<tr><th><label for="id_form-1-MX">MX:</label></th><td><input type="text" name="form-1-MX" value="" id="id_form-1-MX" /></td></tr>
<tr><th><label for="id_form-1-name">Name:</label></th><td><input type="text" name="form-1-name" value="extra initial" id="id_form-1-name" /></td></tr>
<tr><th><label for="id_form-2-MX">MX:</label></th><td><input type="text" name="form-2-MX" value="extra form init 2" id="id_form-2-MX" /></td></tr>
<tr><th><label for="id_form-2-name">Name:</label></th><td><input type="text" name="form-2-name" value="extra init 2" id="id_form-2-name" /></td></tr>
<tr><th><label for="id_form-3-MX">MX:</label></th><td><input type="text" name="form-3-MX" id="id_form-3-MX" /></td></tr>
<tr><th><label for="id_form-3-name">Name:</label></th><td><input type="text" name="form-3-name" id="id_form-3-name" /></td></tr>
<tr><th><label for="id_form-4-MX">MX:</label></th><td><input type="text" name="form-4-MX" id="id_form-4-MX" /></td></tr>
<tr><th><label for="id_form-4-name">Name:</label></th><td><input type="text" name="form-4-name" id="id_form-4-name" /></td></tr>
<tr><th><label for="id_form-5-MX">MX:</label></th><td><input type="text" name="form-5-MX" id="id_form-5-MX" /></td></tr>
<tr><th><label for="id_form-5-name">Name:</label></th><td><input type="text" name="form-5-name" id="id_form-5-name" /></td></tr>
<tr><th><label for="id_form-6-MX">MX:</label></th><td><input type="text" name="form-6-MX" id="id_form-6-MX" /></td></tr>
<tr><th><label for="id_form-6-name">Name:</label></th><td><input type="text" name="form-6-name" id="id_form-6-name" /></td></tr>
<tr><th><label for="id_form-7-MX">MX:</label></th><td><input type="text" name="form-7-MX" id="id_form-7-MX" /></td></tr>
<tr><th><label for="id_form-7-name">Name:</label></th><td><input type="text" name="form-7-name" id="id_form-7-name" /></td></tr>
<tr><th><label for="id_form-8-MX">MX:</label></th><td><input type="text" name="form-8-MX" id="id_form-8-MX" /></td></tr>
<tr><th><label for="id_form-8-name">Name:</label></th><td><input type="text" name="form-8-name" id="id_form-8-name" /></td></tr>
Результат наочно показывает что “некоторые поля в екстра форме были заполнены начальными значениями”. Код аналогичен тому, что я написал раньше.

И так, ты лгал и ничего не пробовал? Если нет, то что же ты понимал под :
все екстра форми в FormSet всегда пустые, а мне нужно чтобы некоторые поля в екстра форме были заполнены начальными значениями

Офлайн

#5 Сен. 30, 2009 11:59:50

patriotyk
От:
Зарегистрирован: 2008-09-05
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

FormSet и initial data для extra форм??

Ferroman
Нет, давай всё-таки разберёмся.
Твой вопрос:
все екстра форми в FormSet всегда пустые, а мне нужно чтобы некоторые поля в екстра форме были заполнены начальными значениями
Ответ есть в документации, я его тебе дал.

Ты же пишешь явный бред сивой кобылы, но с умным видом :
количество словарей в mx_data определяет количество форм в формсете, а екстра форм будет всегда то количситво которое указано в extra параметре и они будут пустые
После замечания, начинаешь нести какой-то маразм о
В дукументации про такую возможность не написано это значит что прямими методами оно не реализовуется, и пишу может ктонибудь знает какие нибуть трики как такое сделать.
Уже после того как я дал линк на документацию где написано как это сделать.

Вот твой код:
 MxFormSet = formset_factory(MXForm, extra=extra, can_delete=True)
c.mx_formset = MxFormSet(initial=mx_data)
Ты говоришь что добавление словарей для эктра-форм в initial, как я и ответил во втором посте, не добавляет начальные значения экстра формам.
Ты же утверждаешь что пробовал так делать.
Значит ты либо лжёшь и не пробовал, либо не достаточно описал задачу.
Я же попробовал:
>>> from django import forms
>>> from django.forms.formsets import formset_factory
>>> class MXForm(forms.Form):
... MX = forms.CharField()
... name = forms.CharField()
>>> extra = 6
>>> MxFormSet = formset_factory(MXForm, extra=extra)
>>> # делаем инициирующие словари
>>> mx_data = MxFormSet(initial=[{'name':'main record', 'MX':'main mx'},{'name':'extra initial', 'MX':''}, {'name':'extra init 2', 'MX':'extra form init 2'}])
>>> mx_formset = MxFormSet(initial=mx_data)
>>> for form in mx_formset.forms:
... print form.as_table()
...
<tr><th><label for="id_form-0-MX">MX:</label></th><td><input type="text" name="form-0-MX" value="main mx" id="id_form-0-MX" /></td></tr>
<tr><th><label for="id_form-0-name">Name:</label></th><td><input type="text" name="form-0-name" value="main record" id="id_form-0-name" /></td></tr>
<tr><th><label for="id_form-1-MX">MX:</label></th><td><input type="text" name="form-1-MX" value="" id="id_form-1-MX" /></td></tr>
<tr><th><label for="id_form-1-name">Name:</label></th><td><input type="text" name="form-1-name" value="extra initial" id="id_form-1-name" /></td></tr>
<tr><th><label for="id_form-2-MX">MX:</label></th><td><input type="text" name="form-2-MX" value="extra form init 2" id="id_form-2-MX" /></td></tr>
<tr><th><label for="id_form-2-name">Name:</label></th><td><input type="text" name="form-2-name" value="extra init 2" id="id_form-2-name" /></td></tr>
<tr><th><label for="id_form-3-MX">MX:</label></th><td><input type="text" name="form-3-MX" id="id_form-3-MX" /></td></tr>
<tr><th><label for="id_form-3-name">Name:</label></th><td><input type="text" name="form-3-name" id="id_form-3-name" /></td></tr>
<tr><th><label for="id_form-4-MX">MX:</label></th><td><input type="text" name="form-4-MX" id="id_form-4-MX" /></td></tr>
<tr><th><label for="id_form-4-name">Name:</label></th><td><input type="text" name="form-4-name" id="id_form-4-name" /></td></tr>
<tr><th><label for="id_form-5-MX">MX:</label></th><td><input type="text" name="form-5-MX" id="id_form-5-MX" /></td></tr>
<tr><th><label for="id_form-5-name">Name:</label></th><td><input type="text" name="form-5-name" id="id_form-5-name" /></td></tr>
<tr><th><label for="id_form-6-MX">MX:</label></th><td><input type="text" name="form-6-MX" id="id_form-6-MX" /></td></tr>
<tr><th><label for="id_form-6-name">Name:</label></th><td><input type="text" name="form-6-name" id="id_form-6-name" /></td></tr>
<tr><th><label for="id_form-7-MX">MX:</label></th><td><input type="text" name="form-7-MX" id="id_form-7-MX" /></td></tr>
<tr><th><label for="id_form-7-name">Name:</label></th><td><input type="text" name="form-7-name" id="id_form-7-name" /></td></tr>
<tr><th><label for="id_form-8-MX">MX:</label></th><td><input type="text" name="form-8-MX" id="id_form-8-MX" /></td></tr>
<tr><th><label for="id_form-8-name">Name:</label></th><td><input type="text" name="form-8-name" id="id_form-8-name" /></td></tr>
Результат наочно показывает что “некоторые поля в екстра форме были заполнены начальными значениями”. Код аналогичен тому, что я написал раньше.

И так, ты лгал и ничего не пробовал? Если нет, то что же ты понимал под :
все екстра форми в FormSet всегда пустые, а мне нужно чтобы некоторые поля в екстра форме были заполнены начальными значениями
Не понимаю что ты хтел этим доказать, так как твой код какраз и доказывает то что я и казал.
Смотри ты написал extra=6 и добавил 3 словаря в initial. Вот и видим 6 екстра пустих форм. И 3 основные записи. Пустих же екстра форм не стало меньше шести, их есть в точности 6. Хочу наголосить что екстра формы это не просто дополнительниые формы, а это отдельній тип которий к примеру не валидируется в is_valid() если в них ничего не было введено, даже если поля форми есть обязательными, и есть ище другие нюансы.

И не надо писать что я бред пишу. Я писал что в документации нет ни слова как заполнить екстра формы дефолтными значениями.

Я даже код джангового формсета пересмотрел и не увидил такой возможности.



Отредактировано (Сен. 30, 2009 12:07:55)

Офлайн

#6 Сен. 30, 2009 19:46:51

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

FormSet и initial data для extra форм??

Действительно, я не заметил, что появилось не 6 дополнительных полей, а больше. Извиняюсь за претензию, но проблема действительно была плохо описана.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version