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