기본 Django 사용자 모델과 연결된 프로필 모델을 성공적으로 만들었지 만 프로필로 데이터를 저장하는 데 문제가 있습니다. 사용자를 만들려고하면 기본 사용자가 요청의 데이터로 만들어 지지만 프로필 모델은 비어있게됩니다. 채워지는 유일한 필드는 사용자에게 알리는 ID와 FK입니다.Django 사용자 프로필 모델 저장 안함
HELP!
모델 :
class StudentProfile(models.Model):
user = models.OneToOneField(User, unique=True)
address = models.CharField(max_length=100, null=True, blank=True)
classroom = models.ForeignKey(Class, null=True, blank=True,
related_name='classes', on_delete=models.CASCADE)
birth = models.CharField(max_length=10, null=True, blank=True)
isStudent = models.BooleanField(default=True)
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
StudentProfile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
창조 방법 : 사용한다, 그래서
user, created = User.objects.create_user(username=request.POST['username'], email=None,
password=request.POST['password'], is_staff=True)
student = StudentProfile.objects.last()
student.address = request.POST['address']
student.birth = request.POST['birth']
student.classroom = request.POST['class']
student.save()
미리 감사드립니다. 코드가 잘못되어 방금 편집했습니다. 프로파일 생성은 여기서 일어나지 않습니다. 그것은 절망의 시도였습니다. 그것은 StudentProfile 클래스에서 발생합니다. – Blackk
아, 여러분은'profile, created = StudentProfile.objects.get_or_create (user = user)'를 사용하여 시도해 볼 수 있습니다. 그러나 이것은 신호를 버그 아웃시킬 수 있습니다. 따라서' create_user_profile' 메서드 – ARJMP
또한 경쟁 조건이 여전히 나타납니다. 두 명의 사용자가 동시에 생성되면 둘 다 동일한 시간에 학생 프로파일을 작성하며 두 학생 모두 동일한 StudentProfile을 선택하고 업데이트 할 수 있습니다. – ARJMP