簡體   English   中英

IntegrityError“異常:字段不是唯一的”對於Django模型中具有unique = True的OneToOneField

[英]IntegrityError “Exception: Field is not unique” for a OneToOneField with unique=True in django models

我在models.py中有以下內容

class Groups(models.Model):
  name = models.CharField(max_length=20)
  calls_lim = models.IntegerField(blank=True,null=True,max_length=2,unique=False)
  time_lim = models.IntegerField(max_length=4,blank=True,null=True,unique=False)
  ivr = models.OneToOneField(ivr,unique=False)

  def __unicode__(self):
    return u'%s' % (self.name)

class UserProfile(models.Model):
  user = models.OneToOneField(User)
  phone = models.IntegerField(max_length=12)
  group = models.OneToOneField(Groups,unique=False)
  msg_rcv = models.IntegerField(default=0,blank=True,null=True)
  msg_snt = models.IntegerField(default=0,blank=True,null=True)
  last_call = models.DateTimeField(blank=True,null=True)
  pin = models.IntegerField(max_length=6,blank=True,null=True)
  blacklist = models.BooleanField(default=False)

  def __unicode__(self):
    return u'%s' % (self.user)

當我嘗試為UserProfile插入時,字段組引發此異常

Exception Value: column group_id is not unique

導致異常的views.py片段

group = Groups.objects.get(name=str(form.cleaned_data['group']))
UserProfile.objects.create(user=User,phone='12345',group=group)

這是預期的行為嗎? 將OneToOneField用於組是否錯誤?

謝謝

憑直覺,我認為組和用戶之間存在多對多的關系(一個用戶可以是許多組的一部分,而一個組可以由許多用戶組成)。 如果是這種情況,請改用ManyToManyField。

如果在您的情況下,用戶只能是一個組的一部分,則組與用戶之間的關系是一對多的,因此UserProfile模型需要有一個ForeignKey才能進行分組。

OneToOnefield僅用於兩個模型之間的一對一關系。

請參閱https://docs.djangoproject.com/en/dev/ref/models/fields/#module-django.db.models.fields.related

暫無
暫無

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

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