django - Django ModelForm - 防止保存在视图中
问题描述
我正在尝试使用 ModelForm 来保存模型。
表格.py
class PurchaseForm(forms.ModelForm):
weight = forms.IntegerField()
class Meta:
model = Purchase
fields = ["number", "pieces"]
视图.py
if request.method == "POST":
form = PurchaseForm(request.POST)
if form.is_valid():
purchase = form.save(commit=False)
purchase.contract = Contract.objects.get(number=slug)
weight = form.cleaned_data.get('weight')
if check_weight(weight, purchase.contract):
weight_type = purchase.contract.supplier.market.weights
purchase.lbs, purchase.kgs = generate_weights(weight, weight_type)
purchase.save()
check_weight
在上面的视图中,如果函数返回,我需要阻止模型保存False
。此函数需要来自相关对象的一些数据。我很难弄清楚这一点。我应该怎么办?
解决方案
如果我正确理解了您的问题,这将起作用,
from django.http import HttpResponse
def my_form_view(request):
if request.method == "POST":
form = PurchaseForm(request.POST)
if form.is_valid():
purchase = form.save(commit=False)
purchase.contract = Contract.objects.get(number=slug)
weight = form.cleaned_data.get('weight')
if check_weight(weight, purchase.contract):
weight_type = purchase.contract.supplier.market.weights
purchase.lbs, purchase.kgs = generate_weights(weight, weight_type)
purchase.save()
return HttpResponse("save success")
return HttpResponse("'check_weight' returned False")
else: # if a GET (or any other method) we'll create a blank form
form = PurchaseForm()
return render(request, 'some_html_template.html', {'form': form})
推荐阅读
- php - 用于过滤 WP 查询的 Wordpress 参数
- python - 让 Arduino 无法与 Flask 框架一起工作,我做错了什么?
- python - Numpy:增加第四维的大小
- java - Docker 内存限制对 Centos 7 主机中的 Java 应用程序无效
- r - 用R看看哪些产品经常一起买
- python - 如何从文件创建嵌套字典列表
- arrays - 如何在Angular 6中使用JSON.stringify(object)将对象转换为字符串后将值推送到数组中
- r - 通过 (...) 时避免参数重复
- android - 如何让 Android HttpURLConnection 处理重定向
- sql-server - 顺便说一句,使用 CTE、视图和子查询是否有任何性能差异?