Django - Самый простой способ установить начальное значение для полей формы в текущее значение базы данных, для пользовательских UserChangeForm? - PullRequest
0 голосов
/ 25 мая 2019

По сути, у меня есть пользовательский UserChangeForm, который использует мою модель пользователя 'Writer', и я хочу установить значение по умолчанию для всех полей в качестве текущего значения из базы данных (или значения от пользователя запроса).Каков будет лучший способ пойти по этому поводу?

Я попытался установить значения по умолчанию в форме, однако объект запроса недоступен в forms.py

в форме ...

class writerChangeForm(UserChangeForm):

    class Meta:
        model = Writer
        fields = ('username', 'email', 'first_name', 'last_name', 'country')
        country = CountryField().formfield()
        widgets = {'country': CountrySelectWidget()}

Представление...

class ProfileView(generic.CreateView):
    form_class = writerChangeForm
    template_name = 'diary/profile.html'

Спасибо за любой вклад!

1 Ответ

0 голосов
/ 25 мая 2019

Лучшим способом будет переопределение get_initial() метода.

class ProfileView(generic.CreateView):
    form_class = writerChangeForm
    template_name = 'diary/profile.html'

    def get_initial(self):
        # get_initial should return dict. They should be rendered in template.
        writer = Writer.objects.get(pk=1) # first get data from database.
        # dictionary key names should be same as they are in forms.
        return {
            'username': writer.username,
            'email': writer.email,
            'first_name': writer.first_name
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...