簡體   English   中英

擴展表時主鍵必須唯一

[英]primary key must be unique when extending table

我正在嘗試添加擴展用戶模型。 我不斷收到此錯誤: Primary key is not unique

class UserExtended(models.Model):
        user = models.OneToOneField(User, on_delete=models.CASCADE,parent_link=True,primary_key=True)

如果我刪除primary_key=True那么我會收到錯誤instance.userextended.id does not exists ,當然現在我沒有id了。

我該如何解決?

models.py中

from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver

class UserExtended(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    # Then you can also add fields like these to extended model
    profilepic = models.ImageField(upload_to='uploads/users/%Y/%m/%d/', null=True, blank=True)
    designation = models.CharField(max_length=200,null=True, blank=True)
    about = models.TextField(null=True, blank=True)
    website = models.URLField(null=True,blank=True)


    def __str__(self):  
        return self.user.username

@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
    if created:
        UserExtended.objects.create(user=instance)

@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
    instance.userextended.save()

現在,無論何時創建新用戶,都會自動為該用戶創建擴展記錄。

同樣,如果保存了用戶記錄,則它將在擴展記錄中自動更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM