Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django使用通用视图创建\更新\对象,窗体不显示_Django_Python - Fatal编程技术网

Django使用通用视图创建\更新\对象,窗体不显示

Django使用通用视图创建\更新\对象,窗体不显示,django,python,Django,Python,尝试使用通用视图,以便通过面向用户的表单更新对象。我的代码在视图中如下所示: from django.views.generic.create_update import update_object @permission_required('myapp.change_foo', login_url="/accounts/login/") def foo_update(request, foo_id): return update_object( request,

尝试使用通用视图,以便通过面向用户的表单更新对象。我的代码在视图中如下所示:

from django.views.generic.create_update import update_object

@permission_required('myapp.change_foo', login_url="/accounts/login/")
def foo_update(request, foo_id):
    return update_object(
        request,
        form_class=FooForm,
        object_id=sr_id,
        template_name = 'foo/update.html',
        template_object_name = 'foo',
    )
表单定义如下所示:

class FooForm(ModelForm):
    somefield = forms.CharField(
        widget=forms.TextInput(attrs={'readonly':'readonly'})
    )

    class Meta:
        model = Foo
在我的模板中,foo/update.html中有这样一个片段:

    <form action="" method="post"> 
        <table>
            {{ foo.as_table }}
        </table>
        <p>
            <input type="submit" value="Submit" />
        </p>
    </form>

{{foo.as_table}}

我以前从未遇到过显示“foo”的问题,但这是我第一次使用这种特殊的通用视图。没有语法错误,只是我的模板中根本没有显示表单

update_object()是否未将“foo”嵌入为表单?是否仍由我添加表单并添加其他内容,然后为其编写save()逻辑?我希望有更多关于这个通用视图及其工作原理的文档。

它就在下面的:

除了额外的上下文之外,模板的上下文将是:

  • form
    :表示用于编辑对象的表单的
    django.forms.ModelForm
    实例。这使您可以在模板系统中轻松地引用表单字段
template\u object\u name
参数会影响实际对象的名称

/编辑

天哪,你们这些人。。。批评一个最好的公开源码项目,但如果它是给你的,甚至不尝试阅读文档。要继续我对文档的报价,请执行以下操作:

例如,如果模型有两个字段,名称和地址:

 <form action="" method="post">
 <p>{{ form.name.label_tag }} {{ form.name }}</p>
 <p>{{ form.address.label_tag }} {{ form.address }}</p>
 </form>

{{form.name.label_tag}{{{form.name}}

{{form.address.label_tag}{{{form.address}}

有关在模板中使用表单对象的详细信息,请参见表单文档


我将模板{u object_name设置为'foo',但是{{foo.as_table}}没有显示任何输出。我的示例没有忽略文档中讨论的任何内容。您需要编写{{form.as_table}。您希望将表单输出为表,而不是对象。是的,它需要。您应该注意文档和PIQUARD都写了些什么。该表单被称为
form
,这并不奇怪。这是您应该使用的变量名
template\u object\u name
完全是另一回事,即您正在编辑的对象,而不是表单。