사용자 프로필로 설정 한 "조직"이라는 모델이 있는데 등록 페이지에 "조직"모델의 필드가 나타나게하고 싶습니다. 어떻게하면 장고 등록으로이 일을 할 수 있습니까? 베이스의 URL에서장고 등록 양식에 추가 필드 추가하기
from registration.forms import RegistrationForm
from forms import *
from models import Organization
class RegistrationFormWithOrganization(RegistrationForm):
organization_logo = field.ImageField()
organization_name = field.CharField()
def save(self, profile_callback = None):
Organization.objects.get_or_create(user = self.cleaned_data['user'],
logo = self.cleaned_data['organization_logo'],
name = self.cleaned_data['organization_name'])
super(RegistrationFormWithOrganization, self).save(self, profile_callback)
: 그리고
# models.py
class Organization(models.Model):
user = models.ForeignKey(User, unique=True)
logo = models.ImageField(upload_to='organizations')
name = models.CharField(max_length=100, null=True, unique=True)
# more fields below etc.
# settings.py
AUTH_PROFILE_MODULE = 'volunteering.organization'
(A)'RegistrationForm'는'user' 필드가 없기 때문에이 작동하지 않을 것입니다, 그래서'self.cleaned_data [ '사용자'] 찾을 수 있습니다 'KeyError' 예외를 던질 것입니다; (b)'Organization' 객체를 생성하기 위해서는'User' 객체가 필요합니다. 새로 생성 된'user' 객체를 반환하는'RegistrationForm.save'를 호출 할 때까지 이것을 얻지 못할 것입니다. 대체 솔루션에 대한 내 대답을 참조하십시오. –
@SimonKagwi 당신의 대답을 사용했지만 계속이 오류가 발생합니다 :/accounts/register/ 에서 TypeError register()는 적어도 2 개의 비 키워드 인수 (주어진 1)를 사용합니다. – anc1revv