2013-03-14 5 views
0

я написал поле формы, как этоДжанго: определить собственную полевую форму

//forms.py

hostAdress = forms.CharField(required = False, 
          label = ('#content'), 
          initial = ('#content')) 
adminHostAdress = hostAdress 
userHostAdress = hostAdress 

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

Когда я пишу

adminHostAdress = forms.CharField(required = False, 
            label = ('#content'), 
            initial = ('#content')) 
userHostAdress = forms.CharField(required = False, 
           label = ('#content'), 
           initial = ('#content')) 

все работает, но я повторюсь, и я больше из этих полей я хочу написать один раз.

Любая идея?

ответ

0

Ваш первый пример - просто присвоить один и тот же CharField двум отдельным переменным формы, поэтому по существу они используют один и тот же экземпляр поля формы Django. Если вы хотите, вы могли бы попробовать что-то вроде следующего:

class MyForm(forms.Forms): 
    def __init__(self, *args, **kwargs): 
     super(MyForm, self).__init__(*args, **kwargs) 
     for field_name in ["adminHostAdress", "userHostAdress", ...]: 
      self.fields[field_name] = forms.CharField(
       required = False, 
       label = ('#content'), 
       initial = ('#content')) 

, но это менее читаемыми IMO и не особо избавляя вас много времени.

+0

ok, thats nasty;) нет ли способа получить два отдельных экземпляра поля формы, легко? – Bubbleboy

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