2013-05-28 2 views
2

Я работаю с формой Джанго, которая выглядит следующим образом:Как добавить динамические атрибуты в виде Джанго

class UploadImageForm(forms.Form): 
    image = forms.ImageField() 
    image.widget.attrs["onchange"]="this.form.submit();" 
    stream_id = forms.CharField(max_length=100) 
    stream_id.widget.attrs["style"]="display:none;" 

Для stream_id поля, я хотел бы значения предварительного заполнения на основе соответствующего поля связанной модели, которую я имею в моей базе данных. Как изменить код шаблона, чтобы добавить атрибут, который позволит мне заполнить его?

Я хотел бы избежать использования JS, если возможно.

Спасибо!

+0

По какой-то причине вы не используете 'ModelForm' или не заселяете его в методе' __init__'? Почему это должно быть на _template_? –

+0

Я не знал, что могу использовать параметр init, я изучаю этот atm. ModelForms не представляется возможным, потому что форма только изменяет одно поле в другой более крупной модели. – khalid13

ответ

4

Вы можете динамически изменять свою форму с помощью init и self.fields dict. Что-то вроде этого:

class UploadImageForm(forms.Form): 

    def __init__(self, something=None, *args, **kwargs): 

     super(UploadImageForm, self).__init__(*args, **kwargs) 
     self.fields['stream_id'] = something 
+0

Я пытаюсь использовать этот atm, но похоже, что поле с автопопуляцией возвращает ошибку «Это поле обязательно». Вы знаете, почему это было бы? – khalid13

+0

Это сработало, спасибо. – khalid13

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