列user_id的问题不是唯一的 [英] Problems with column user_id is not unique

查看:139
本文介绍了列user_id的问题不是唯一的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在这里遇到这样的问题,当我提出一个问题,他不保存,并且该错误弹出:Django:IntegrityError:列user_id不是唯一的。告诉我问题是什么。



这里我的models.py

  class Question(models.Model):
title = models.CharField(max_length = 120)
content = models.TextField()
pub_date = models.DateTimeField(blank = True,null = False,auto_now_add = True)
views = models.IntegerField(default = 0)
slug = models.SlugField(max_length = 240,blank = True)
tag = TaggableManager()
user = models.OneToOneField(User,unique = True)

def __unicode __(self):
return self.title


def save self,** kwargs):
如果不是self.pk:
self.date_added = date.today()

如果self.title而不是self.slug:
self.slug = slugify(self.title)

超级(问题,自我).save(** kwargs)

views.py

  def ask(request):
if request.method =='POST':
form = AskForm( request.POST)
如果form.is_valid():
question = form.save(commit = False)
question.user = request.user
question.save()
form.save_m2m()
返回重定向('/ question / one_question /'+ str(question.id))
返回HttpResponseBadRequest()
/ pre>

追溯

 异常类型:IntegrityError at / question / ask / 
异常值:列user_id不唯一


解决方案

您需要更改问题模型,因为@DanielRoseman表示您应该更改您正在使用的OneToOneField :

  class Question(models.Model):
#... ... ..其他字段.... ....
user = model.OneToOneField(User,unique = True)

您需要从 OneToOneField to ForeignKey 以防万一一个问题可以与一个用户相关联,但用户可以与多个问题(多对一关系)相关:

 类问题(models.Model):
#... ... ..其他字段.... ....
user = models.ForeignKey(User)

或可能 ManyToManyField 是大多数在这里,如果许多答案可以与许多用户相关:

  class问题(models.Model):
#... ... ..其他字段.... ....
user = models.ManyToMany(User)


I had such a problem here, when I ask a question he does not save and this error pops up: "Django: IntegrityError: column user_id is not unique". Tell me what the problem is.

Here my models.py

class Question(models.Model):
    title = models.CharField(max_length=120)
    content = models.TextField()
    pub_date = models.DateTimeField(blank=True, null=False, auto_now_add=True)
    views = models.IntegerField(default=0)
    slug = models.SlugField(max_length=240, blank=True)
    tag = TaggableManager()
    user = models.OneToOneField(User, unique=True)

    def __unicode__(self):
        return self.title


    def save(self, **kwargs):
        if not self.pk:
            self.date_added = date.today()

        if self.title and not self.slug:
            self.slug = slugify(self.title)

        super(Question, self).save(**kwargs)

views.py

def ask(request):
    if request.method == 'POST':
        form = AskForm(request.POST)
        if form.is_valid():
            question = form.save(commit=False)
            question.user = request.user
            question.save()
            form.save_m2m()
            return redirect('/question/one_question/' + str(question.id))
    return HttpResponseBadRequest()

Traceback

Exception Type: IntegrityError at /question/ask/
Exception Value: column user_id is not unique

解决方案

You need to change your Question model, as @DanielRoseman says you should change the OneToOneField you're using:

class Question(models.Model):
    # ... ... .. other fields .... ....
    user = models.OneToOneField(User, unique=True)

You need to change from OneToOneField to ForeignKey in case that one question can be related only with one user but an user can be related with more than one question (Many to one relation):

class Question(models.Model):
    # ... ... .. other fields .... ....    
    user = models.ForeignKey(User)

or probably ManyToManyField is the most apropiated here, in case that many answers can be related with many users:

class Question(models.Model):
    # ... ... .. other fields .... ....
    user = models.ManyToMany(User)

这篇关于列user_id的问题不是唯一的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆