2014-09-14 4 views
0

여기에 문제가 있습니다. 질문하지 않고 저장하지 않고이 오류가 팝업됩니다. "Django : IntegrityError : user_id 열이 고유하지 않습니다." 문제가 뭔지 말해봐. 여기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): 
     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() 

역 추적

당신은 @DanielRoseman 당신이해야 말한대로, 당신의 질문 모델을 변경해야
Exception Type: IntegrityError at /question/ask/ 
Exception Value: column user_id is not unique 
+2

왜이 당신에게 놀라운 : 많은 답변이 많은 사용자와 관련이있을 수있는 경우에, 여기 opiated? OneToOneField에는 질문에서 사용자까지가 있으므로 각 사용자는 * 하나 * 질문 만 허용됩니다. 더 이상 추가하면 표시되는 오류가 발생합니다. –

+0

모델을 설정 한 방식에 따라 사용자는 한 가지 질문 만 할 수 있습니다. 따라서 첫 번째 질문을 한 후에는 해당 사용자에게 더 이상 '질문'을 추가 할 수 없습니다. 이게 너가하고 싶은거야? –

답변

1

OneToOneField를 변경하십시오. 당신이 사용하고 있습니다 :

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

하는 당신은 하나 개의 질문이 한 사용자 만 관련 될 수 있다는 경우 OneToOneField 외래 키까지 변경해야하지만, 사용자가 개보다와 관련 될 수있다 (한 관계로 많은) 질문 :

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

또는 아마 ManyToManyField 가장 4월입니다

class Question(models.Model): 
    # ... ... .. other fields .... .... 
    user = models.ManyToMany(User) 
관련 문제