Django models 错误:非空约束失败:posts\u post.author\u id

Django models 错误:非空约束失败:posts\u post.author\u id,django-models,django-forms,django-views,Django Models,Django Forms,Django Views,我正在创建一个博客应用程序,我有一个问题,我在任何地方都找不到答案。我是django的初学者 因此,我的应用程序上有一个页面,用户可以在其中创建新帖子。当我填写区域并按确认时,我得到一个错误非空约束失败:posts\u post.author\u id。它说异常是我的views.py文件中的form.save() views.py forms.py models.py new-post.html {%extends'posts/base.html%} {%block title%} 新职位 {%

我正在创建一个博客应用程序,我有一个问题,我在任何地方都找不到答案。我是django的初学者

因此,我的应用程序上有一个页面,用户可以在其中创建新帖子。当我填写区域并按确认时,我得到一个错误
非空约束失败:posts\u post.author\u id
。它说异常是我的
views.py
文件中的
form.save()

views.py forms.py models.py new-post.html
{%extends'posts/base.html%}
{%block title%}
新职位
{%endblock%}
{%block content%}
换一个新职位
{%csrf_令牌%}
{{form.title}}
{{form.content}}
证实 {{error}} {%endblock%}
from django.shortcuts import render, redirect
from .models import Post
from .forms import PostForm

# Create your views here.

def index(request):

    posts = Post.objects.order_by('created_on')

    return render(request, 'posts/list.html', {'title': 'Home page', 'posts': posts})

def about(request):
    return render(request, 'posts/about.html', {'title': 'About page'})

def newPost(request):

    error = ''

    if request.method == 'POST':
        form = PostForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('home')
        else:
            error = 'Incorrect form'

    form = PostForm()

    context = {
        'form': form,
        'error': error
    }

    return render(request, 'posts/new-post.html', context)
from .models import Post
from django.forms import ModelForm, TextInput, Textarea

class PostForm(ModelForm):

    class Meta:
        model = Post
        fields = ['title', 'content']
        widgets = {
            'title': TextInput(attrs={
                'class': 'form-control',
                'placeholder': 'Enter title...'
            }),
            'content': Textarea(attrs={
                'class': 'form-control',
                'placeholder': 'Enter content...'
            })
        }
from django.db import models
from django.contrib.auth.models import User

# Create your models here.

STATUS = (
    (0, 'Draft'),
    (1, 'Published')
)

class Post(models.Model):
    title = models.CharField(max_length=50)
    slug = models.SlugField(max_length=30, unique=True)
    author = models.ForeignKey(
        User, on_delete=models.CASCADE, related_name='blog_posts', default=None)
    content = models.TextField()
    updated_on = models.DateTimeField(auto_now=True)
    created_on = models.DateTimeField(auto_now_add=True)
    status = models.IntegerField(choices=STATUS, default=0)

    class Meta:
        ordering = ['-created_on']
        verbose_name = 'Post'
        verbose_name_plural = 'Tasks'

    def __str__(self):
        return self.title
{% extends 'posts/base.html' %} 
{% block title %}
New Post
{% endblock %} 
{% block content %}
    <h5>Make a new post</h5>
    <form method="post">
        {% csrf_token %}
        {{ form.title }}</br>
        {{ form.content }}</br>
        <button type="submit" class="btn btn-success">Confirm</button>
        <span>{{ error }}</error>
    </form>
{% endblock %}