2009-12-07 1 views
2

사용자가 Modelform을 사용하여 first_name과 last_name을 편집하고 있는데 UserProfile의 추가 필드가 필요합니다 (1 대 1 사용자와의 관계)가 추가되었습니다. Django : 하나의 양식 정의에서 두 모델의 필드 데이터를 시작/수집하는 방법

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의 modelform하지만 지금까지 행운을 subclassing.

나는 당연히 그것은 정상적인 형태로 만들어 내보기

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.

답변

1

대개 두 모델을 각 모델에 하나씩 만 만듭니다. 예 : 예를 들어 this message

+0

안녕하세요 akaihola,이 방법이 가장 쉬웠을 것 같습니다. 이 예제에서 user_form과 profile_form은 ModelForms라고 가정합니다. – GerardJP

+0

@GerardJP 예. 먼저 두 가지를 모두 확인한 다음 저장하십시오. – akaihola

1

나는 당신이 inline formsets을 찾고 있다고 생각합니다. 관련 객체를 사용하여 작업하도록 설계되었습니다.

+0

고관절 벤, 나는 그것을 작동 시키지만, 내 경우에는 캐논을 사용하여 모기를 죽이는 느낌이 든다. 여러 개의 일대 다를 편집하는 것이 편리합니다. 1 대 1 관계 만 가지고 있기 때문에 양식 정의 내에서 모델의 필드를 얻는 다른 방법이 있습니까? – GerardJP