Ich versuche, eine app.Model.pyDjango mehrere verwandte Formen Datenverarbeitungsfehler
class serviceinvoice(models.Model):
user=models.ForeignKey(User,related_name='invoice')
invoice_number=models.PositiveIntegerField()
#invoice_no = models.CharField(max_length = 500, default = increment_invoice_number, null = True, blank = True)
invoice_date = models.DateField()
invoice_receivable=models.ForeignKey(Receivables,null=True)
total_amount=models.DecimalField(decimal_places=2,max_digits=20)
total_amountwithtax=models.DecimalField(decimal_places=2,max_digits=20)
def __str__(self):
return self.invoice_number
class serviceinvoiceitems(models.Model):
user=models.ForeignKey(settings.AUTH_USER_MODEL,related_name='serviceinvoiceitems')
invoice_number=models.ForeignKey(serviceinvoice)
Product=models.CharField(max_length=1000,null=True)
UOM=models.CharField(max_length=100,null=True)
Quantity=models.FloatField(null=True)
Rate=models.FloatField(null=True)
Tax_rate=models.FloatField(null=True)
def __str__(self):
return self.invoice_number
forms.py
class createinvoiceform(forms.ModelForm):
class Meta:
model=serviceinvoice
exclude=('user',)
widgets = {
'invoice_date': forms.DateInput(attrs={'class':'datepicker'}),
}
class invoiceitemform(forms.ModelForm):
class Meta:
model=serviceinvoiceitems
exclude=('user','invoice_number',)
views.py
zu machen@login_required
def createinvoice(request):
if request.method == 'POST':
inv_form=createinvoiceform(data=request.POST)
inv_item=invoiceitemform(data=request.POST)
if inv_form.is_valid() and inv_item.is_valid():
new_form=inv_form.save(commit=False)
new_form.user=request.user
new_form.save()
new_invitem=inv_item.save(commit=False)
new_invitem.user=request.user
new_invitem.invoice_number=request.invoice_number
new_invitem.save()
return HttpResponse('Invoice created')
else:
inv_form=createinvoiceform()
inv_item=invoiceitemform()
inv_form.fields["invoice_receivable"].queryset=Receivables.objects.filter(user=request.user)
return render(request,'account/createinvoice.html',{'inv_form':inv_form,'inv_item':inv_item})
Formulare werden in der Vorlage angezeigt, aber nicht von der Ansicht verarbeitet.
Erste Fehler,
(1048, "Spalte 'invoice_number_id' kann nicht null sein").
Bitte führen auf:
Wie kann ich diese Form verarbeiten, da zweite Form Fremdschlüssel ersten Formular verwendet wird.
Gibt es eine Möglichkeit in der Vorlage, die zweite Form mehrmals anzuzeigen?
Aber INVOICE_NUMBER erforderlich. Es ist ein Fremdschlüssel zwischen 2 Modellen. –