Python “完整性错误”;例外情况:字段不是唯一的”;对于django模型中unique=True的OneToOneField
我在models.py中有以下内容Python “完整性错误”;例外情况:字段不是唯一的”;对于django模型中unique=True的OneToOneField,python,django,django-models,Python,Django,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)
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执行插入时,field组抛出此异常
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仅用于两个模型之间的一对一关系
请参阅“
创建(用户=用户,…)
”?您要么通过编写User=…
来隐藏User
模型,要么试图将User
模型类转换为User
id,这毫无意义。此外,您不应该对所有内容都设置null=True
<例如,code>msg_snt和msg_rcv
毫无意义,因为None
而不是0
。另外,max_length
对整型字段
不执行任何操作。最后,什么是ivr
?谢谢。。。我对sql关系感到困惑。