2016-04-27 6 views
1

私はDjango 1.9でかなり新しく、アプリケーションを作成しようとしていますが、このエラーに遭遇しました。修正方法はわかりません。ここに私のエラーとコードがあります。 エラー:models.pyでdjango1.9でIntegrityErrorが発生しました

IntegrityError at /blogapp//post/ 

NOT NULL constraint failed: blogapp_blog.user_id 

:views.pyで

from django.db import models 
from django.conf import settings 
from django.contrib.auth.models import User 
class Blog(models.Model): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL) 
    title = models.CharField(max_length=50) 
    content = models.CharField(max_length=99999) 
    date = models.DateTimeField(auto_now_add=True) 
    def __unicode__(self): 
     return self.title 

def post(request): 
    form = BlogText() 

    if request.method == 'POST': 
     form = BlogText(request.POST.copy()) 
     if form.is_valid(): 
      data = form.cleaned_data 
      title = data['title'] 
      content = data['content'] 
      if not Blog.objects.all().filter(title=title): 
       blog = Blog.objects.create(title=title,content=content,date=timezone.now()) 
       return render(request,'blogapp/postok.html') 
      else: 
       return HttpResponse('The title is used') 
    else: 
     form = BlogText() 
    return render(request,'blogapp/post.html',{'form':form}) 

私はviews.pyでこれを追加する必要がありますか?

if request.user.is_authenticated(): 

誰か私を助けてください。私はこれで本当に悪いと思う。

答えて

2

user_idはnullにすることはできませんので、あなたはこのエラーを取得しています

NOT NULL constraint failed: blogapp_blog.user_id

あなたはまたuserを追加する必要があります。

blog = Blog.objects.create(title=title, content=content, 
          date=timezone.now(), user=request.user) 

だけlogged-inユーザーがアクセスできることを確認してくださいlogin_requiredデコレータを使用してこのビュー:

@login_required 
def post(request): 
    # your stuff here 
+0

_ユーザーが現在ログインしていない場合、ユーザーは[documentation](https://docs.djangoproject.com/ja/1.9/ref/request-response/#django)からAnonymousUser_のインスタンスに設定されます。 http.HttpRequest.user) – AKS

+0

@Alasdairありがとうございます。私は自分の答えを更新しました。 – AKS

+0

はい、デコレータは動作しますが、ユーザーはお互いの記事を見ることができます。実際には、それは私が達成したいものではありません。 – CodeReapper

関連する問題