Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.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_Models_Django 1.9 - Fatal编程技术网

Django 如何提交表单以更新现有对象

Django 如何提交表单以更新现有对象,django,models,django-1.9,Django,Models,Django 1.9,我有一个名为Book的模型,我将其发送到html以显示以下数据: books = Book.objects.all() return render(request, 'index.html', {'books':books}) 然后,我在前端显示我想要的关于这本书的所有信息(这里不需要显示) 除了在前端显示图书信息之外,我还想介绍一个小表单,它有两个按钮,比如“提交”和“拒绝”,它将根据单击的按钮更新图书对象的属性 我正试图找到一个好办法来实现这一点。我的想法是将整个对象发布到视图中,以便稍后

我有一个名为Book的模型,我将其发送到html以显示以下数据:

books = Book.objects.all()
return render(request, 'index.html', {'books':books})
然后,我在前端显示我想要的关于这本书的所有信息(这里不需要显示)

除了在前端显示图书信息之外,我还想介绍一个小表单,它有两个按钮,比如“提交”和“拒绝”,它将根据单击的按钮更新图书对象的属性


我正试图找到一个好办法来实现这一点。我的想法是将整个对象发布到视图中,以便稍后处理,但我不确定将整个对象从客户端提交到服务器是否是一种好的做法,因为这可能会受到某种影响

如果只是要更新的属性,则不需要发送任何表单数据。您可以这样做(我使用uuid只是一个示例,您可以使用id或任何您想要的唯一字段):

#更新视图的url。例如:衰落
url(r'^DELENCE/book/(?P[\w\-]+)$),
YourView.as_view(),
name=“账面价值下降”),
#views.py
类YourView(视图):
def get(自我、请求、*args、**kwargs):
book\u uuid=kwargs.get('book\u uuid',无)
book=get\u object\u或\u 404(book,uuid=book\u uuid)
#在这里更新你的书
#在您的模板中为每本书的“拒绝”按钮链接

如果表单数据只是一个要更新的属性,则不需要发送任何表单数据。您可以这样做(我使用uuid只是一个示例,您可以使用id或任何您想要的唯一字段):

#更新视图的url。例如:衰落
url(r'^DELENCE/book/(?P[\w\-]+)$),
YourView.as_view(),
name=“账面价值下降”),
#views.py
类YourView(视图):
def get(自我、请求、*args、**kwargs):
book\u uuid=kwargs.get('book\u uuid',无)
book=get\u object\u或\u 404(book,uuid=book\u uuid)
#在这里更新你的书
#在您的模板中为每本书的“拒绝”按钮链接

Tiny Instance提供了一个通用的解决方案。如果您想要一个更具体的解决方案来更新一个模型的对象,方法是从用户那里得到一个表单,那么Django内置了一些东西来为您实现这一点FormView是您正在寻找的


请参阅此处的官方文档->

Tiny Instance提供了一个通用解决方案。如果您想要一个更具体的解决方案来更新一个模型的对象,方法是从用户那里得到一个表单,那么Django内置了一些东西来为您实现这一点FormView是您正在寻找的

请参阅此处的官方文档->

这可能会帮助您:

如果要使用与Book对象相关的其他值更新数据库,则可以通过执行以下操作来实现:

if request.POST:
        book_form = BookForm(request.POST)

    if book_form.is_valid():

        book = Book.objects.get(pk=book_id)
            book_form = BookForm(request.POST, instance = book)
            book_form.save() 
它将根据图书id进行过滤,从而更新数据库中现有的图书对象。

这可能会帮助您:

如果要使用与Book对象相关的其他值更新数据库,则可以通过执行以下操作来实现:

if request.POST:
        book_form = BookForm(request.POST)

    if book_form.is_valid():

        book = Book.objects.get(pk=book_id)
            book_form = BookForm(request.POST, instance = book)
            book_form.save() 

它将根据图书id进行过滤,从而更新数据库中现有的图书对象。

我推荐这种方式。。。当用户选中或取消选中“将数据发布到后端以进行处理”复选框时…@RajaSimon您能提供更多详细信息吗?我推荐这种方式。。。当用户选中或取消选中“将数据发布到后端以进行处理”复选框时…@RajaSimon您能提供更多详细信息吗?谢谢。这个解决方案似乎还可以,但我正在寻找一个不依赖URL的解决方案。谢谢。这个解决方案似乎还可以,但我正在寻找一个不依赖URL的解决方案。我没有表单。我没有表单。