為什么我的數據看起來像這樣?我可以在 user_id 中設置值嗎?如果我刪除 def create_user_profile,它將創建 nama、nik、電子郵件、nomor_hp。但 user_id 為空在圖片中,我在沒有 def create_user_profile 的情況下創建了 id 1 和 2,而在我使用 def create_user_profile 時創建了 id 3,4,5,6這是我的模型.pyclass Profile(models.Model): user = models.OneToOneField(User, null=True, blank=True, on_delete=models.CASCADE) nama = models.CharField(max_length=30, blank=True) nik = models.CharField(max_length=30, blank=True) email = models.EmailField(max_length=75, blank=True) nomor_hp = models.TextField(max_length=15, blank=True) def __str__(self): return self.user@receiver(post_save, sender=User)def create_user_profile(sender, instance, created, **kwargs): try: instance.profile.save() except ObjectDoesNotExist: Profile.objects.create(user=instance)這是我創建用戶的views.py,我在這里犯錯了嗎?def signup(request): if request.method == 'POST': user_form = UserCreationForm(request.POST) profile_form = ProfileForm(request.POST) if user_form.is_valid() and profile_form.is_valid(): user = user_form.save(commit=False) profile = profile_form.save(commit=False) user.is_active = False user.save() profile.save() uidb64 = urlsafe_base64_encode(force_bytes(user.pk)) domain = get_current_site(request).domain link=reverse('activate', kwargs={ 'uidb64': uidb64, 'token': token_generator.make_token(user)}) activate_url = 'http://'+domain+link email_body = 'Hallo '+user.username + 'Tolong gunakan link ini untuk verifikasi akun anda\n' +activate_url email_subject = 'Aktivasi Akun Anda' email = EmailMessage( email_subject, email_body, '[email protected]', [profile.email], )
1 回答

紅糖糍粑
TA貢獻1815條經驗 獲得超6個贊
您的signup視圖和信號都會成為一個Profile對象,更糟糕的是,在后者中您不會鏈接到用戶。
我建議放棄創建Profile. 它沒有多大用處。如果您稍后編輯Profile,您應該簡單地保護它,此外您應該確保當您創建一個User對象時,您只是正確地鏈接它。例如:
def signup(request):
if request.method == 'POST':
user_form = UserCreationForm(request.POST)
profile_form = ProfileForm(request.POST)
if user_form.is_valid() and profile_form.is_valid():
user = user_form.save()
profile_form.instance.user = user
profile = profile_form.save()
# …
# …
添加回答
舉報
0/150
提交
取消