Python ';类别';此函数的关键字参数django无效

Python ';类别';此函数的关键字参数django无效,python,django,Python,Django,所以,我在写博客,我有班级分类和班级帖子 class Category(models.Model): title = models.CharField(max_length=65) slug = models.SlugField(unique=True) description = models.TextField(max_length=155) class Post(models.Model): author = models.ForeignKey(User

所以,我在写博客,我有班级分类和班级帖子

class Category(models.Model):
    title = models.CharField(max_length=65)
    slug = models.SlugField(unique=True)
    description = models.TextField(max_length=155)


class Post(models.Model):
    author = models.ForeignKey(User)
    categories = models.ManyToManyField(Category)
    title = models.CharField(max_length=65)
    slug = models.SlugField(unique=True)
    description = models.TextField(max_length=155)
    content = models.TextField()
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
    updated = models.DateTimeField(auto_now=True, auto_now_add=False)
当我想添加新帖子时,出现了以下错误

异常值:“类别”是此函数的无效关键字参数

这就是我在views.py中的内容,也是应该向数据库添加新帖子的内容

def post_new(request):
    if request.user.is_authenticated():
        form = PostForm(request.POST or None)
        if form.is_valid():
            cd = form.cleaned_data
            post = Post(title=cd['title'], content=cd['content'],
                        description=cd['description'],
                        categories=cd['categories'],
                        author=User.objects.get_by_natural_key(request.user.get_username()))
            post.save()
            return redirect(post)
    return render_to_response('post_edit.html', {'form': PostForm(request.POST or None)},
                              context_instance=RequestContext(request))
这里怎么了?

(我想
PostForm
是一个模型表单)

您可以直接保存表单,并返回一个
Post
实例。简单使用

 post = form.save(commit=False)
 post.author = request.user
 post.save() 

出现错误的原因是,在保存对象之前,无法将其添加到M2M字段中(我假设
PostForm
是一个ModelForm)

您可以直接保存表单,并返回一个
Post
实例。简单使用

 post = form.save(commit=False)
 post.author = request.user
 post.save() 


出现错误的原因是,在保存对象之前,无法将其添加到M2M字段

如何在
视图.py中导入
Post
?您还进行了哪些导入?从models import*和一些其他导入:loader、Context、RequestContext、render等@xnxsax的答案可能是您想要的答案,但您的代码也应该可以工作,所以请检查您是否在某处导入了另一个
Post
类(即,在
视图.py
中仅用所需的内容替换
导入*
)。如何在您的
视图中导入
Post
。py
?您还进行了哪些导入?从模型导入*和一些其他导入:loader、Context、RequestContext、render等@xnxsax的答案可能是您想要的答案,但您的代码也应该可以,所以请检查您是否在某处导入了另一个
Post
类(即,仅将
导入*
替换为
视图.py
中需要的内容)。如果使用
commit=False
,则还必须在之后执行
form.savem2m()
,否则将不会保存类别。如果使用
commit=False
,则还必须执行
form.savem2m()
之后,否则将不会保存类别。