Python Django表单不使用基于视图的函数保存新帖子

Python Django表单不使用基于视图的函数保存新帖子,python,django,Python,Django,我有一个模型如下: class Post(models.Model): title = models.CharField(max_length=150) author = models.ForeignKey(User, on_delete=models.CASCADE) date_posted = models.DateTimeField(default=timezone.now) imagefile = models.FileField(null=True, b

我有一个模型如下:

class Post(models.Model):
    title = models.CharField(max_length=150)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    date_posted = models.DateTimeField(default=timezone.now)
    imagefile = models.FileField(null=True, blank=True, upload_to='images', default='default.jpg')
视图文件中有一个bug,当我使用类基视图时,我可以发布新的帖子,但每当我将其用作函数时,它都不会保存表单

此选项有效(将帖子保存在数据库中):

但是这个没有(不在数据库中保存帖子):

在postform.html中:

 <form method="POST" action="" enctype="multipart/form-data">
     <fieldset class="form-group">
           {% csrf_token %}
           <div class="content-section">
               <!-- {{ form|crispy }} -->
           </div>
     </fieldset>
 </form>

我认为问题在于表单的模型是post,并且将用户的对象指定为实例

所以试着这样做:

@login_required
def PostCreateView(request):
    if request.method == 'POST':
        mform = postform(request.POST or None, request.FILES or None)
        if mform.is_valid():
            post = mform.save(commit=False)
            post.author = request.user
            post.save()
            messages.success(request, f'Yes!')
            return redirect('posts')
    else:
        mform = postform()
    return render(request, 'myapplication/postform.html', {'form': mform})
 <form method="POST" action="" enctype="multipart/form-data">
     <fieldset class="form-group">
           {% csrf_token %}
           <div class="content-section">
               <!-- {{ form|crispy }} -->
           </div>
     </fieldset>
 </form>
class postform(forms.ModelForm):
    class Meta:
        model = Post
        fields = ("__all__")
        exclude = ['date_posted']
@login_required
def PostCreateView(request):
    if request.method == 'POST':
        mform = postform(request.POST or None, request.FILES or None)
        if mform.is_valid():
            post = mform.save(commit=False)
            post.author = request.user
            post.save()
            messages.success(request, f'Yes!')
            return redirect('posts')
    else:
        mform = postform()
    return render(request, 'myapplication/postform.html', {'form': mform})