사용자 등록이 어려워 실제로 다른 프로필 유형을 사용하려고합니다. 등록하는 동안 사용자를 생성하는 동안 UserProfile을 설정할 수 없습니다. UserCreationForm을 사용하고 있습니다. 내 파일의 코드는 다음과 같습니다.django 프로필 만들기, 여러 프로필 유형을 사용하는 동안 사용자 프로필 설정
from django.contrib.auth.forms import UserCreationForm
from registration.forms import RegistrationForm
from django import forms
from django.contrib.auth.models import User
from accounts.models import UserProfile
from django.utils.translation import ugettext_lazy as _
from person.models import Person
from pprint import pprint
class UserRegistrationForm(UserCreationForm):
#email = forms.EmailField(label = "Email")
fullname = forms.CharField(label = "Full name")
class Meta:
model = User
fields = ("email","fullname","password1","password2")
def __init__(self, *args, **kwargs):
super(UserRegistrationForm, self).__init__(*args, **kwargs)
del self.fields['username']
def clean_email(self):
"""
Validate that the supplied email address is unique for the
site.
"""
if User.objects.filter(email__iexact=self.cleaned_data['email']):
raise forms.ValidationError(_("This email address is already in use. Please supply a different email address."))
return self.cleaned_data['email']
def save(self, commit=True):
user = super(UserRegistrationForm, self).save(commit=False)
#user_profile=user.set_profile(profile_type="Person")
UserProfile.profile.person.full_name = self.cleaned_data["fullname"]
user.email = self.cleaned_data["email"]
if commit:
user.save()
return user
class CompanyRegistrationForm(UserCreationForm):
email=forms.EmailField(label="Email")
class UserProfileForm(forms.ModelForm):
class Meta:
model=UserProfile
exclude=('user',)
계정/models.py는
from django.db import models
from django.contrib.auth.models import User
class UserProfile(models.Model):
user=models.OneToOneField(User)
meta_keywords=models.CharField("Meta Keywords",max_length=255,
help_text="Comma delimited set of keywords of meta tag")
meta_description=models.CharField("Meta Description",max_length=255,
help_text='Content for description meta tag')
def __unicode__(self):
return "User Profile for: "+self.username
class Meta:
ordering=['-id']
views.py
from django.contrib.auth.forms import UserCreationForm
from django.template import RequestContext
from django.shortcuts import render_to_response,get_object_or_404
from django.core import urlresolvers
from django.http import HttpResponseRedirect
from django.contrib.auth.decorators import login_required
from accounts.forms import UserRegistrationForm, UserProfileForm
#from accounts.forms import UserProfile
def register(request,template_name="account/register.html"):
if request.method=='POST':
postdata=request.POST.copy()
form=UserRegistrationForm(postdata)
user_profile=UserProfileForm(postdata)
if form.is_valid():
form.save()
un=postdata.get('username','')
pw=postdata.get('password','')
from django.contrib.auth import login,authenticate
new_user=authenticate(username=un,password=pw)
if new_user and new_user.is_active:
login(request,new_user)
url=urlresolvers.reverse('dashboard')
return HttpResponseRedirect(url)
else:
form=UserRegistrationForm()
page_title="User Registration"
return render_to_response(template_name,locals(),context_instance=RequestContext(request))
@login_required
def dashboard(request):
pass
@login_required
def settings(request):
pass
내가 여러 프로필을 사용하고 그래서 다음 그 프로파일 'models.py 중 하나의 코드입니다
from django.db import models
from django.contrib.auth.models import User
from accounts.models import UserProfile
class Person(UserProfile):
skills=models.CharField(max_length=100)
fullname=models.CharField(max_length=50)
short_description=models.CharField(max_length=255)
is_online=models.BooleanField(default=False)
tags=models.CharField(max_length=50)
profile_pic=models.ImageField(upload_to="person_profile_images/")
profile_url=models.URLField()
date_of_birth=models.DateField()
is_student=models.BooleanField(default=False)
current_designation=models.CharField(max_length=50)
is_active_jobseeker=models.BooleanField(default=True)
current_education=models.BooleanField(default=True)
class Meta:
db_table='person'
내 프로필 인증 accounts.models에서 이 accounts.forms에서 USERPROFILE 가져 person.models 가져 오기에서 UserProfileForm 수입 : N settings.py 여기
AUTH_PROFILE_MODULE='accounts.UserProfile'
또한 내가, profile.py 다른 곳을보고 한 후 사용하는 파일입니다 company.models에서 사람 는 회사
def retrieve(request,profile_type):
try:
profile=request.user.get_profile()
except UserProfile.DoesNotExist:
if profile_type=='Person':
profile=Person.objects.create(user=request.user)
else:
profile=Company.objects.create(user=request.user)
profile.save()
return profile
def set(request,profile_type):
profile=retrieve(request,profile_type)
profile_form=UserProfileForm(request.POST,instance=profile)
profile_form.save()
나는 새로운 오전과 혼란은, 또한 문서를 보았다 가져옵니다. 또한 stackoverflow.com 다른 솔루션을 보았지만 내 문제의 해결책을 찾지 못했습니다. 그러니 나에게 도움이되는 것을 찾았 으면 알려주세요. 그것은 큰 문제로 보이지 않습니다. 그러나 저는 그것에 익숙하지 않으므로 저에게는 문제입니다.
고유 한 값이 True 인 사용자 Foreignkey를 사용하면 어떻게됩니까? 그러면 어떻게 연결합니까? 모델 현명한 때문에, 나는 이미 R & D를 해왔다. 그래서 나는 현재 프로파일을 연결하는 데 문제가있다. 사용자 등록은 이전에하지 않았으므로. 그래서 부모 클래스가 USerProfile이고 다른 Person과 Company가 2 가지를 상속하는지 여부를 연결하는 방법을 모르겠습니다. – Hafiz
그럼'Person (user = user)'를 쓰면 Person에 연결하고'UserProfile'과'Person' 테이블에있는 데이터를 업데이트 할 것인가? 그래서 장고는이 성명서로 그 모든 연결을 이해할 것인가? 어리석은 질문을 위해 유감스럽게 여기는 그러나 나는 그것에서 새롭다 다만 이해하고 싶, 그것을 다시 보는 당신의 시간 동안 진짜로 감사한다 – Hafiz
나는 그것이 작동해야한다 것을 나는 생각한다. 그래도 테스트하지 않았습니다. 너 해봤 어? 특별히 문제가 있습니까? –