2016-04-27 14 views
1

Ich bin ziemlich neu in Django 1.9, und ich versuche, eine App zu machen, aber ich stieß auf diesen Fehler, ich weiß nicht, wie es zu beheben ist. Hier sind meine Fehler und Codes. Fehler:Ein IntegrityError passiert in django1.9

IntegrityError at /blogapp//post/ 

NOT NULL constraint failed: blogapp_blog.user_id 

in models.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 

in views.py:

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}) 

Muss ich dies in views.py hinzufügen müssen:

if request.user.is_authenticated(): 

Jemand bitte helfen Sie mir. Ich denke, ich bin wirklich schlecht darin.

Antwort

2

Sie erhalten diesen Fehler, da die user_id nicht null sein kann:

NOT NULL constraint failed: blogapp_blog.user_id

Sie müssen auch das hinzufügen user:

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

Bitte beachten Sie auch darauf achten, dass nur logged-in Benutzer zugreifen können Diese Ansicht unter Verwendung von login_required Dekorateur:

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

_Wenn der Benutzer derzeit nicht angemeldet ist, wird der Benutzer auf eine Instanz von AnonymousUser_ .. von [documentation] (https://docs.djangoproject.com/en/1.9/ref/request-response/#django) festgelegt. http.HttpRequest.user) – AKS

+0

@Alasdair Danke. Ich habe meine Antwort aktualisiert. – AKS

+0

Ja, der Dekorateur funktioniert, aber die Benutzer können den Artikel des anderen sehen. Eigentlich möchte ich das nicht erreichen. – CodeReapper

Verwandte Themen