2

私は Django の一般的なビューを実践しています。特にModelForms

これらは私の見解とモデルです

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

ビュー.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)

ビューは正常に動作しているようで、エラーは表示されません。しかし、フォームを送信して投稿を保存した後に Django 管理ページを確認すると、何らかの理由で投稿がデータベースに保存されません。

なぜこれが起こっているのですか?

4

2 に答える 2

1

これを試して。

def form_valid(self, form):
    form.instance.user = self.request.user
    form.instance.post_date = datetime.now()
    return super(PostCreate, self).form_valid(form)
于 2013-07-24T12:55:20.430 に答える