使用保存的表单而不是清理的表单django

时间:2018-06-25 08:14:27

标签: django django-models django-forms django-templates django-views

我无法在receive.html中显示发票编号。 发票编号是在models.py

中自动生成的

models.py

from random import randint

class Buyer(models.Model):
    name_of_buyer = models.CharField(max_length=200,null=True)
    address_of_buyer = models.CharField(max_length=200,null=True)
    interested_in = models.ForeignKey(Box,on_delete=models.CASCADE,null=True)
    Pickup_dt = models.DateField(null=True)
    Pickup_time = models.CharField(max_length=80,null=True)
    Invoice_number = models.CharField(max_length=12,blank=True,unique=True)
        def save(self, *args, **kwargs):
            if self.interested_in == 'Mangos':
                x=randint(99,99999)
                self.Invoice_number = str('MAN') + str(x)
            elif self.service == 'Banana':
                x=randint(99,99999)
                self.Invoice_number = str('BAN') + str(x)
            elif self.service == 'Apple':
                x=randint(99,99999)
                self.Invoice_number = str('APP') + str(x)
            super(imfc_one,self).save()
    def __str__(self):
            return str(self.Invoice_number)

forms.py

class Sale(forms.ModelForm):
    def clean_interested_in(self):
        buyer_interested_in_box = self.cleaned_data['interested_in']
        if buyer_interested_in_box.mango < 10:
               raise forms.ValidationError('Not enough fruits.Please select another box')
    class Meta:
        model = Buyer
        fields = '__all__'

view.py

def ind(request):
    form = Sale()
    if request.method == 'POST':
        form = Sale(request.POST)
        if form.is_valid():
            form.save(commit=True)
            return render(request,'app_one/receipt.html',{'upform':form.cleaned_data})
        else:
            print("form is not vaalid")
    return render(request,'app_one/index1.html',{'form':form})

receipt.html

receipt : {{ upform.Invoice_number }}

如何在收据中输入发票编号

谢谢。

1 个答案:

答案 0 :(得分:3)

您不必通过form.cleaned_data。只需传递您保存的对象

def ind(request):
    form = Sale()
    if request.method == 'POST':
        form = Sale(request.POST)
        if form.is_valid():
            buyer = form.save(commit=True)
            return render(request,'app_one/receipt.html',{'buyer': buyer})
        else:
            print("form is not vaalid")
    return render(request,'app_one/index1.html',{'form':form})

在receive.html中,只需致电

receipt : {{ buyer.Invoice_number }}
相关问题