Django发票模型formset

时间:2018-04-04 10:58:17

标签: javascript django django-forms django-templates formset

我正在尝试创建发票表单。我正在尝试使用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)

我想在表单中选择客户和添加产品。简单的结算系统

1 个答案:

答案 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()
相关问题