Django模型中OneToOneField(unique=True)出现IntegrityError "异常:字段不是唯一的
我在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插入数据时,字段group出现了这个异常:
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来处理group是不是不对?
谢谢!
1 个回答
0
直观上,我觉得用户和组之间是多对多的关系(一个用户可以加入多个组,而一个组也可以有多个用户)。如果是这样的话,就应该使用ManyToManyField。
但如果在你的情况中,一个用户只能属于一个组,那么用户和组之间就是一对多的关系,这样用户资料模型就需要有一个指向组的ForeignKey。
OneToOneField只用于两个模型之间的一对一关系。
可以参考 这个链接。