Джанго: Как инициировать / собрать полевые данные из двух моделей в одном определении формы - PullRequest
2 голосов
/ 07 декабря 2009

Я использую Modelform for User для редактирования first_name и last_name, но я хочу добавить к этому дополнительное поле из UserProfile (которое имеет отношение 1-к-1 к User).

class UserProfileInfoForm(forms.ModelForm):
    """ Profile Model field specifications for edit.
    """
    class Meta:
        model = User
        fields = ('first_name', 'last_name', 'user_phonemobile')

    first_name = forms.CharField(
                            label = _('First name'),
                            max_length = 30,
                            required = True
                            )
    last_name = forms.CharField(
                            label = _('Last name'),
                            max_length = 30,
                            required = True
                            )
    user_phonemobile = forms.CharField(
                            label = _('Mobile phone'),
                            max_length = 15,
                            required = False,
                            )

У меня есть дополнительное поле в ModelForm (и отображается на странице), но я не могу его заполнить значением из другой модели (UserProfile). Я пытался сделать это подклассом init формы модели, но пока не повезло.

Конечно, я мог бы сделать его нормальной формой и заполнить его, на мой взгляд,

userdata  = request.user.get_profile()
data = {
    'first_name': request.user.first_name,
    'last_name': request.user.last_name,
    'user_phonemobile': userdata.user_phonemobile,
    }
profileinfoform = UserProfileInfoForm(data)

Но при добавлении дополнительных полей в будущем создается впечатление, что это загромождает мое определение представления.

С уважением,

Gerard.

Ответы [ 2 ]

1 голос
/ 08 декабря 2009

Я обычно просто создаю две формы, по одной для каждой модели. Смотрите, например это сообщение для примера.

1 голос
/ 07 декабря 2009

Я полагаю, вы ищете встроенные формы . Они предназначены для работы со связанными объектами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...