django - 使用更新模型中的值的按钮为用户交互编写 Django 的最佳方法是什么
问题描述
我正在尝试为以下编写 Django 代码:
用户按下前端的按钮。多个按钮选项可将值递减 10、20、30 等。
当用户按下按钮时,后端的 Django 模型属性的值将相应递减。例如在下面的代码中,我将初始值设置为 107。当用户按下 html 模板中的“减 10”按钮时,我希望从 107 中减去 10,这样该值就变为 97。用户没有输入任何数据.
我没有成功尝试使用 Django modelForm 和“POST”,但没有成功。
任何建议表示赞赏。
下面是我没有工作的代码。
模型.py
class Balance(models.Model):
userBalance = models.DecimalField(max_digits=10, decimal_places=2, null=True)
表格.py
class BalanceForm(forms.ModelForm):
class Meta:
model = Balance
fields = ['userBalance']
视图.py
def balance(request):
form = BalanceForm(initial={"userBalance":107})
if form.is_valid():
if request.method == "POST" and "form10" in request.POST:
formValue = form.cleaned_data.get('userBalance')
form2 = formValue - 10
return render(request, "econlabs/balance.html", {'form2': form2})
return render(request, "econlabs/balance.html", {'form': form})
解决方案
为该模型创建一个更新视图并指定您要更新的字段。您可以使用自定义表单,但相信我,这些通用视图会为您节省大量时间。
视图.py:
from django.views.generic.edit import UpdateView
class updBalanceUpdateView(UpdateView):
model = Balance
fields = ['userBalance']
template_name_suffix = '_update_form'
在所有属性中,您可以提及需要更新的属性。如上面最后一行 (template_name_suffix) 所示,为模板使用相同的命名后缀模式... [modelname_update_form.html] 并显示表单...
Balance_update_form.html:
{% extends "base.html" %}
{% load static %}
{% load bootstrap_tags %}
{% block title %} Update {% endblock %}
{% block body%}
<div class="jumbotron">
Are you sure you want to update ?
</div>
<br>
<form method="POST">
{% csrf_token %}
{{ form|as_bootstrap }}
<input type="submit" value="Submit" />
</form>
{% endblock %}
确保从模板中获取要更新的相应元素:
<h3><a href="{% url 'app_name:update' pk=val.pk %}">update</a></h3>
单击上面会触发 url。添加网址,
网址.py:
path('update/<int:pk>', views.updBalanceUpdateView.as_view() , name = "update"),
PS:您还可以使用查询更新视图中的值以选择所需的对象,然后像这样编辑它们,
在 view.py 中:
example = Balance.objects.filter(id = pk).update(userBalance = userBalance - 10)
查看文档以获取更多信息: https ://docs.djangoproject.com/en/3.1/ref/class-based-views/generic-editing/
推荐阅读
- jquery - 使用 json 的 Ajax 自动完成
- python - 我应该如何在 django 中编写我的模型(这个案例有点具体)?
- google-cloud-firestore - Google Data Studio 的 Firestore 社区连接器无法正常工作
- c# - 在启动期间在 ASP Net Core 3.0 中配置 httpClients 的最佳做法是什么?
- rust - 借来临时价值下降,但我不想让
- mongodb - 猫鼬中文档的最大大小
- python - Keras 实现类似连体的网络共享层
- ruby-on-rails - 具有嵌套哈希的活动记录存储
- javascript - 解析云获取具有用户角色的所有用户
- python - 如何设置具有一类的 pipeline.config 文件以在 mobilenet v3 large 上进行训练?以及如何设置微调检查点?