Ich habe ein Formular, wo gibt es ein Feld wie Menge, Rate, basic_amount (deaktiviert), Mehrwertsteuer, Other_expenses und net_amount (deaktiviert). Das Feld basic_amount ist die Berechnung aus Menge und Rate und net_amount ist die Berechnung von basic_amount, other_expenses und vat. Dazu habe ich das Signal zum Speichern in der Datenbank verwendet, wenn der Benutzer das Formular abschickt. Wenn ich das Formular abschicke, erhalte ich eine Fehlermeldung, dass basic_amount und net_amount erforderlich sind, obwohl ich ihnen das Attribut blank = True, null = True übergeben habe.deaktiviert Feld wird als erforderlich markiert nach dem Übergeben von null = True
Wie kann ich nun basic_amount und net_amount speichern?
Hier ist mein Code
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)
Ich dachte bei der Verwendung von modelform, wenn ein Feld leer = True, null = True hat, behandelt es als nicht erforderlich. Danke für Ihre Hilfe. –