내 auth.User 모델에 정보를 추가하기 위해 나는 piece of doc을 따랐습니다. 저는 사용자를 사회로 가정하고 (예를 들어 사용자가 클라이언트라고 가정)이 사회에서 일하고 싶습니다. 그래서 여기 내 코드입니다 :"사용자 추가 정보"개체를 올바르게 만드는 방법./IntegrityError "Column * something *은 null이 될 수 없습니다."
사회/models.py :
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
class UserProfile(models.Model):
"""
Stores the user informations except
login basic informations.
"""
user = models.OneToOneField(User)
firstname = models.CharField(max_length=128)
lastname = models.CharField(max_length=128)
society = models.ForeignKey('Society')
job = models.ForeignKey('UserJob')
class Society(models.Model):
"""
Stores the informations about the societies.
"""
name = models.CharField(max_length=128)
class UserJob(models.Model):
"""
Stores the user job category in the society.
"""
name = models.CharField(max_length=64)
def create_user_profile(sender, instance, created, **kwargs):
"""
Uses the post_save signal to link the User saving to
the UserProfile saving.
"""
if created:
UserProfile.objects.create(user=instance)
#the instruction needed to use the post_save signal
post_save.connect(create_user_profile, sender=User)
사회/admin.py : 내 관리 -의 필드를하기 위해 UserProfileInline을 추가
from django.contrib import admin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin
from societies.models import UserProfile, Society, UserJob
class UserProfileInline(admin.StackedInline):
"""
Defines an inline admin descriptor for UserProfile model
which acts a bit like a singleton
"""
model = UserProfile
can_delete = False
verbose_name_plural = 'profile'
class UserAdmin(UserAdmin):
"""
Defines a new User admin.
"""
inlines = (UserProfileInline,)
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
admin.site.register(Society)
admin.site.register(UserJob)
사이트 사용자 양식.
AUTH_PROFILE_MODULE = 'societies.UserProfile'
문제는 내가 USERPROFILE 특정 필드를 작성 포함한 관리 현장 내 사용자 양식을 통해 사용자를 만들려고 할 때, 내가 얻을 다음입니다 : 내 settings.py에이 라인을 추가 이 : 나는 '폼에서 사회를 지정한 때문에
/관리/인증/사용자에 IntegrityError/
("null 일 수 없습니다 열이'society_id '"1048,)/
추가 문제가 신호에서 오는 것이 아니라면 자기 자신에게 묻습니다. 내 create_user_profile 함수로 처리. 내가 앞서 언급 한 의사를 고려할 때, 할 일이 더 없다. 그러나, UserProfile.create (...) 호출을 통해 firstname, lastname, society 및 job과 같은 UserProfile 필드를 채우는 방법을 정확하게 설명하지 않아도됩니까? ("user = instance"매개 변수 이외에). 이 경우 매개 변수를 채우는 데 올바른 요소를 얻는 방법을 모르겠습니다. 의사는 "accepted_eula"와 "favorite_animal"에 대해서는 아무 것도 행해지 지 않습니다. 그래서 저는 틀렸어 ... 그렇지 않나요?
답변 해 주셔서 대단히 감사합니다. 제 언어에 대해 사과드립니다.