私は、数量、レート、basic_amount(無効)、vat、other_expenses、net_amount(無効)のようなフィールドがあるフォームを持っています。 basic_amountフィールドはquantityとrateからの計算で、net_amountはbasic_amount、other_expenses、およびvatの計算です。このために、ユーザーがフォームを送信するときにデータベースに保存するための信号を使用しました。私はフォームを提出すると、私はエラーが発生しましたbasic_amountとnet_amountが必要ですが、私はブランク= true、null = Trueの属性を渡しているが、それらに必要です。無効なフィールドは、null = Trueを渡した後に必要とマークされます
basic_amountとnet_amountを保存するにはどうすればよいですか?ここで
私のコード
class PurchaseOrder(models.Model):
item = models.ForeignKey(Item, blank=True, null=True)
quantity = models.PositiveIntegerField(default=0)
rate = models.DecimalField(default=0.0, max_digits=100, decimal_places=2)
basic_amount = models.DecimalField(default=0.0, max_digits=100, decimal_places=2, blank=True, null=True)
vat = models.CharField(max_length=10, blank=True, null=True)
other_expenses = models.DecimalField(default=0.0, max_digits=100, decimal_places=2)
net_amount = models.DecimalField(default=0.0, max_digits=100, decimal_places=2, blank=True, null=True)
def save_basic_amount_and_net_amount(sender, instance, *args, **kwargs):
if (instance.quantity and instance.rate):
instance.basic_amount = instance.quantity * instance.rate
if (instance.basic_amount and instance.vat and instance.other_expenses):
instance.net_amount = instance.amount - instance.other_expenses - instance.vat
pre_save.connect(save_basic_amount_and_net_amount, sender=PurchaseOrder)
class PurchaseOrderForm(forms.ModelForm):
basic_amount = forms.DecimalField(disabled=True)
net_amount = forms.DecimalField(disabled=True)
class Meta:
model = PurchaseOrder
exclude = ('office', 'timestamp', 'updated',)
def purchase_order(request):
form = PurchaseOrderForm(request.POST or None)
if request.method == "POST" and form.is_valid():
office_instance = OfficeSetup.objects.get(owner=request.user)
new_form = form.save(commit=False)
new_form.office = office_instance
new_form.save()
messages.success(request, 'Thank you')
return redirect('purchase-order-lists')
messages.warning(request, "Correct the errors below")
context = {
"form": form,
}
return render(request, 'dashboard/purchase_order/purchase_order.html', context)
フィールドが空白= True、null = Trueの場合、モデルフォームを使用すると、不要と見なされると考えられました。ご協力いただきありがとうございます。 –