2014-12-18 3 views
0

내 models.py 파일에있는 두 개의 CharFields를 form.py FirstName과 LastName에, CharField FullName을 가지고 있습니다.Django에서 두 개의 양식 필드 추가하기

두 개의 (성 및 성)을 어떻게 추가하고 FullName으로 저장합니까?

forms.py (작동하지 않음)에서 시도 했으므로 다른 옵션은 posts.py의 POST 요청 이후에 변경하는 것이지만 내용을 변경하는 방법은 확실하지 않습니다.

models.py

class UserProfile(models.Model): 
    FullName = models.CharField(max_length=10) 
    balance = models.IntegerField(default=2000) 

    def __unicode__(self): 
     return self.user.FullName 

forms.py

class UserProfileForm(forms.ModelForm): 

    FirstName = forms.CharField() 
    LastName = forms.CharField() 
    balance = forms.IntegerField(initial=2000,help_text="") 

    def clean(self): 
     cleaned_data = self.cleaned_data 
     url = cleaned_data.get('url') 
     if url and not url.startswith('http://'): 
      url = 'http://' + url 
      cleaned_data['url'] = url 

     return cleaned_data 

    class Meta: 
     model = UserProfile 
     fields = ('FullName', 'balance') 

views.py

def index(request): 
    context = RequestContext(request) 

    game_list = Game.objects.all() 
    context_dict = {'games': game_list} 
    profile_form = UserProfileForm() 

    if request.method == 'POST': 
     profile_form = UserProfileForm(data=request.POST) 
     context_dict = {'games': game_list, 'profile_form':profile_form} 

     print profile_form 

     if profile_form.is_valid(): 

      profile = profile_form.save(commit=False) 

      profile.save() 
      registered = True 

     else: 
      print profile_form.errors 

    return render_to_response('/', context_dict, context) 
+0

은 모델 폼 또는 간단한 양식입니까? 말하자면,이 양식에는이 모델의 다른 분야가 포함되어 있습니까? 어쩌면 일부 코드를 표시 – DRC

+0

코드 스 니펫을 추가했습니다 – Evelyn

+0

'FullName'필드를 표시하지 않는 이유는 무엇입니까? 사용자가'UserProfile'을 편집하고자 할 때 잠재적 인 골칫거리가 될 것입니다. 'Name1 Name2''와 'Name3''의 'FirstName'과 'LastName'과 'Name1''과 'Name2 Name3''의 'FirstName'과 'LastName'을 어떻게 구별 할 것입니까? – dirn

답변

0

는 가장 쉬운 방법은 채우기는 양식의 방법을 저장 오버라이드 (override)하는 것입니다 인스턴스 전체 이름 필드

그냥 그루터기 내가 생각하기 때문에,

class UserProfile(models.Model): 
    # various things ... 
    def set_fullname(self, f_name, l_name): 
     self.FullName = f_name + ' ' + l_name 

이 또한 내가보기 부분을 무시 해요 : 당신이 원하는대로

다음 UserProfile 모델에서 당신은 예를 들어, 그 논리를 구현하는 set_fullname 방법이있을 것이다 큰 개선이 필요합니다.

+1

고마워요! 완벽하게 일했습니다. :) – Evelyn

관련 문제