首页 > 解决方案 > 这个简单的视图函数有什么问题?

问题描述

models.py 文件包含:

class Story(models.Model):
    title = models.CharField(max_length=255)
    text = models.TextField()
    author = models.ForeignKey(User)

forms.py 文件包含:

class StoryForm(forms.Form):
    class Meta:
        model = Story

views.py 文件包含:

def story(request):
    if request.method == 'POST':
        story_form = StoryForm(request.POST)
        if story_form.is_valid():
            story_form.cleaned_data['author'] = request.user.id

这里的问题必须是以下 4 个选项之一:

  1. Story.author 必须是“用户”实例,因为 Form.cleaned_data 字典中的对象通过 to_python() 方法转换为 python 对象

  2. Form.cleaned_data 尚未定义

  3. Form.cleaned_data 只能填写在 Form.clean() 或Form.clean_<field_name>()方法中

  4. 没有什么是错的

我最好的猜测是 3,因为我认为 2 是无效的,因为cleaned_data 是一个预定义的函数,我无法真正理解 1。这 4 个中的哪一个是真正的问题?

标签: djangodjango-views

解决方案


推荐阅读