Джанго устанавливает данные из базы данных в поле - PullRequest
0 голосов
/ 09 февраля 2011

Я пытаюсь заполнить два поля <input type="text"> значением из базы данных, с формами django по умолчанию.

Я пытался установить его с помощью запроса, но он получает значение при запуске и не принимаетэто из БД после того, как значения были изменены id БД.

Мои формы выглядят так:

s_size = forms.IntegerField(initial=Sizes.objects.get(id=1).small)
m_size = forms.IntegerField(initial=Sizes.objects.get(id=1).medium)

Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 09 февраля 2011

Вы должны передать исходные данные из представления, как описано в документации :

class MyForm(forms.Form):
    s_size = forms.IntegerField(i)
    m_size = forms.IntegerField()

...

def my_view(request):
    s_size_value = Sizes.objects.get(id=1).small
    m_size_value = Sizes.objects.get(id=1).medium
    form = MyForm(initial={'s_size': s_size_value, 'm_size': m_size_value})
0 голосов
/ 09 февраля 2011

вам нужно пересоздать класс формы для каждого запроса.

def my_form_factory():
    class my_form(forms.Form):
        s_size = forms.IntegerField(initial=Sizes.objects.get(id=1).small)
        m_size = forms.IntegerField(initial=Sizes.objects.get(id=1).medium)
        ...
    return my_form()

def my_view(request):
    form=my_form_factory()

Другое решение - обновить поля формы в методе __init__() формы через словарь self.fields:

class my_form(forms.Form):
    __init__(*args, **kwargs):
        super(my_form, self).__init__(*args, **kwargs)
        self.fields['s_size']=forms.IntegerField(initial=Sizes.objects.get(id=1).small)
        self.fields['m_size']=forms.IntegerField(initial=Sizes.objects.get(id=1).medium)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...