0

나는 다음 models.py에게장고 사용자 모델의 필드를 참조하는 방법은 무엇입니까?

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    url = models.URLField(blank=True) 
    address=models.CharField(max_length=60) 
    location = models.CharField(max_length=30) 
    join_date = models.DateField(auto_now_add=True) 

이 내가 가지고있는 다음과 같은 forms.py

class UserForm(ModelForm): 
    class Meta: 
     model = UserProfile 

나는 다음과 같은 views.py 내 템플릿에서

def login_temp(request): 
    form = UserForm() 
    c = RequestContext(request, { 
     'form': form, 
     }) 
    return render_to_response('registration/login.html', c) 

(로그인이있다. html), 어떻게 장고 정의 된 사용자 클래스의 필드에 액세스 할 수 있습니다. 현재 아래 구문을 사용하고 있습니다. 이 구문으로, "주소"입력 필드 내 템플릿에 나타나지만, "사용자 이름"입력 필드 내가 {{ form.user.username }} 일을 시도하지

<form action="/accounts/register/" method="POST"> 
    <label class="control-label" for="id_address">Address</label> 
    {{ form.address }} 

    <label class="control-label" for="id_username">Username</label> 
    {{ form.username }} 
</form> 

을 수행하지만, 그 중 하나가 작동하지 않았다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 템플릿에 사용자 이름 필드가 나타나게하려면 어떻게해야합니까? 참고로, 변수 username은 사용자 모델에 정의되어 있습니다. User 모델은 Django로 미리 정의 된 "라이브러리"입니다.

답변

0

반대의 관계로 사용자 개체에 액세스 할 수 있습니다. 이 시도 :

{{ form.user.username }} 
+0

나는 그것을 시도했다. 그것도 작동하지 않았다. 다른 제안? – goelv

1

을 기존 모델 인스턴스에서 날짜 형식을로드하려면, 당신은

form = UserForm(instance=existing_user_profile) 

existing_user_profile처럼 뭔가이 줄을

form = UserForm() 

을 변경해야 UserProfile의 기존 인스턴스입니다.

+0

기존 데이터를로드하고 싶지 않습니다. 사용자가 사용자 이름을 입력하고 등록을 클릭 한 다음 새 프로필을 만들거나 새 데이터를 만들 수있는 입력 필드를 만들고 싶습니다. – goelv

+0

나는 그것이 공백이되고 싶다. 문제는 단순히 실제로 입력 할 수있는 "텍스트 상자"또는 "입력 슬롯"을 표시하지 않는다는 것입니다. 내가 무슨 뜻인지 아십니까? – goelv

+0

아하. 이 경우 다니엘의 대답을보십시오. – Ghopper21

0

여기 몇 가지 사항을 혼동스럽게 생각합니다. UserProfile 모델의 인스턴스는 user 속성을 통해 관련 사용자 인스턴스에 액세스하므로 my_profile.user.username을 수행합니다.

하지만 여기서는 인스턴스에 대해 이야기하지 않고 양식에 대해 이야기하고 있습니다. 관련 모델의 필드에 액세스하는 방법을 묻는 것은 의미가 없습니다. 양식은 실제로 해당 양식에 의해 정의 된 필드 만 가지며, 사용자의 경우에는 UserProfile 모델의 필드 만 포함하는 양식이 있습니다.

사용자 모델에 대한 필드를 원하면 양식 정의에 직접 추가해야합니다. 하지만 수동으로 저장해야합니다. 자동 form.save()에 포함되지 않습니다. 또는 단일 HTML 양식 요소에 포함 된 두 개의 개별 모델 양식을 사용하십시오.

관련 문제