python - Django 的 CreateView 没有保存对象

标签 python django

我正在练习 Django 的通用 View ,尤其是 ModelForms

这些是我的观点和模型

模型.py

class Post(models.Model):
    user = models.ForeignKey(User)
    post_title = models.CharField(max_length=200)
    post_content = models.CharField(max_length=500)
    post_date = models.DateTimeField('date posted')

    def get_absolute_url(self):
        return reverse('user-detail', kwargs={'pk': self.pk})

    def __unicode__(self):
        return self.post_title

表单.py

class PostForm(forms.ModelForm):
    post_title = forms.CharField(
        label=u'Title',
        widget=forms.TextInput(attrs={'size':64})
    )
    post_content = forms.CharField(
        label=u'Content',
        widget=forms.TextInput(attrs={'size':128})
    )
    class Meta:
        model = Post

views.py

class PostCreate(CreateView):
    fields = ['post_title', 'post_content']
    template_name = 'app_blog/post_save_form.html'
    model = Post
    form_class = PostForm   

    @method_decorator(login_required)
    def dispatch(self, *args, **kwargs):
        return super(PostCreate, self).dispatch(*args, **kwargs)

    def form_valid(self, form):
        self.object = form.save(commit=False)
        self.object.user = self.request.user
        self.object.post_date = datetime.now()
        return super(PostCreate, self).form_valid(form)

该 View 似乎工作正常,未显示任何错误。但是,当我在提交表单并保存帖子后检查 Django 管理页面时,由于某种原因帖子没有保存到数据库中。

知道为什么会这样吗?

最佳答案

正如我从您使用的代码中看到的

self.object = form.save(commit=False)

这意味着该对象不会保存到数据库中,但您可以将其用于进一步处理。所以你应该使用这样的东西:

self.object = form.save(commit=False)  # Not hit database
self.object.user = self.request.user  # Update user
self.object.post_date = datetime.now()  # Update post_date
self.object.save()  # And finally save your object to database.

关于python - Django 的 CreateView 没有保存对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17833117/

相关文章:

python - 使用 numpy.einsum 删除循环

python - 卡片排序列表

django - 在 vbox 共享文件夹上执行collectstatic 会出现只读错误

Django:M2M 字段计数的平均值、最大值和最小值

python - Python sympy 无法求解多项式函数

python - 间隔树中的查询太慢

python - Flask 应用程序的功能测试 : Weird Twill Traceback

python - 带有自定义选择字段的 Django 模型查询

python - 在同一 View 中使用多个表单

python - 在 Django 中更新表单后出现 NoReverseMatch 错误