Django ModelForm-防止在视图中保存
我正在尝试使用ModelForm保存模型 forms.pyDjango ModelForm-防止在视图中保存,django,django-forms,django-views,Django,Django Forms,Django Views,我正在尝试使用ModelForm保存模型 forms.py class PurchaseForm(forms.ModelForm): weight = forms.IntegerField() class Meta: model = Purchase fields = ["number", "pieces"] if request.method == "POST": form = PurchaseForm(request.POST)
class PurchaseForm(forms.ModelForm):
weight = forms.IntegerField()
class Meta:
model = Purchase
fields = ["number", "pieces"]
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()
视图.py
class PurchaseForm(forms.ModelForm):
weight = forms.IntegerField()
class Meta:
model = Purchase
fields = ["number", "pieces"]
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\u 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})
从django.http导入HttpResponse
定义我的表单视图(请求):
如果request.method==“POST”:
表单=采购表单(request.POST)
如果form.is_有效():
购买=表单。保存(提交=False)
purchase.contract=contract.objects.get(number=slug)
权重=表单.数据.获取('weight')
如果检查重量(重量、采购合同):
重量\类型=采购.合同.供应商.市场.重量
purchase.lbs,purchase.kgs=生成重量(重量,重量类型)
purchase.save()
返回HttpResponse(“保存成功”)
返回HttpResponse(“'check_weight'返回False”)
否则:#如果使用GET(或任何其他方法),我们将创建一个空白表单
form=PurchaseForm()
返回render(请求'some_html_template.html',{'form':form})
这里有什么问题?您的代码似乎很好嗯,当check weight返回false时,我认为它是在节省,但它现在似乎正在工作。我的数据库一定是出了什么事。