我正在尝试创建发票表单。我正在尝试使用formset,因为产品将在销售过程中多次添加。我一直在创建表单方面失败。
我的模特:
class Fatura(models.Model):
musteri = models.ForeignKey(CariModel, on_delete=models.CASCADE, blank=False)
fatura_tarihi = models.DateField(auto_now=True, blank=False)
fatura_numarasi = models.CharField(max_length=36, default=fatura_numarasi)
odeme_tarihi = models.DateField(auto_now=False, blank=True)
def __str__(self):
return "{} - {}".format(self.musteri, self.fatura_numarasi)
class FaturaUrunler(models.Model):
fatura = models.ForeignKey(Fatura, on_delete=models.CASCADE, blank=False)
baslik = models.CharField(max_length=128, blank=False)
urun = models.CharField(max_length=128, blank=False)
miktar = models.DecimalField(max_digits=12, decimal_places=3, default=1)
fiyat = models.DecimalField(max_digits=12, decimal_places=3)
vergi = models.CharField(choices=KDV, default=18, max_length=5)
我的观点:
def index(request):
class GerekliFormlar(BaseFormSet):
def __int__(self, *args, **kwargs):
super(GerekliFormlar,self).__init__(*args, **kwargs)
self.queryset = Fatura.object.none()
UrunlerFormset = formset_factory(UrunForm, max_num=0, formset=GerekliFormlar)
if request.method == 'POST':
fatura_form = FaturaForm(request.POST)
urunler_formset = UrunlerFormset(request.POST, request.FILES)
if fatura_form.is_valid() and urunler_formset.is_valid():
fatura = fatura_form.save()
for form in urunler_formset.forms:
urunler = form.save()
urunler.fatura = fatura
urunler.save()
return HttpResponse("tesekkürler")
else:
fatura_form = FaturaForm()
urunler_formset = UrunForm()
c = {
'fatura_form': fatura_form,
'urunler_formset': urunler_formset
}
c.update(csrf(request))
return render_to_response('anasayfa_gecici.html', c)
我想在表单中选择客户和添加产品。简单的结算系统
答案 0 :(得分:0)
在您的视图中,您为GET请求实例化了一个表单UrunForm()
,为POST请求实例化了一个表单集UrunlerFormset()
。在这两种情况下都应该使用UrunlerFormset
。
if request.method == 'POST':
fatura_form = FaturaForm(request.POST)
urunler_formset = UrunlerFormset(request.POST, request.FILES)
...
else:
fatura_form = FaturaForm()
urunler_formset = UrunlerFormset()