2013-11-11 2 views
0

я получил ModelForm с некоторыми АЯКСОМ действий, которые создают поля, такие как:Джанго: Начальные поля ModelForm с тем же именем

<input type="hidden" name="myfield" value="1" /> 
<input type="hidden" name="myfield" value="2" /> 

Я прекрасно спасительным эти данные как ManyToMany используя request.POST.getlist('myfield'), но я не могу для инициализации скрытых полей ввода в представлении обновления.

То, что я получил до сих пор:

class MyModelForm(forms.ModelForm): 
    myfield = forms.Field('Some field') 

    class Meta: 
     model = MyModelForm 

    def __init__(self, *args, **kwargs): 
     other_models = OtherModel.objects.filter(mymodelform=kwargs['instance']) 

Так что теперь, как я могу включать каждый из other_models из __init__ как скрытых полей?

ответ

1

Динамические формы форм можно добавлять динамически таким образом.

class MyModelForm(forms.ModelForm): 
    myfield = forms.Field('Some field') 

    class Meta: 
     model = MyModelForm 

    def __init__(self, *args, **kwargs): 

     instance = kwargs.pop('instance')  
     other_models = OtherModel.objects.filter(mymodelform=instance) 

     super(MyModelForm, self).__init__(*args, **kwargs) 

     for i, other_model in enumerate(other_models): 
      self.fields['other_model_field_{i}'.format(i=i)] = forms.CharField(widget = forms.HiddenInput(), initial=other_model.name) 
+0

Хорошо, спасибо, но как насчет использования того же 'other_model' в атрибуте' name' каждого скрытого тега ввода? – vmassuchetto

+0

, вы должны указать начальный атрибут. проверьте edt. – karthikr

+0

Это сработало для вас? – karthikr

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