![](/img/trans.png)
[英]django: Does `unique=True` prevent `IntegrityError`?
[英]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.