Используйте сохраненную форму вместо очищенной формы django - PullRequest
0 голосов
/ 25 июня 2018

Я не могу отобразить номер счета в квитанции .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})

receive.html

receipt : {{ upform.Invoice_number }}

Как мне указать номер счета в квитанции. html

Спасибо.

1 Ответ

0 голосов
/ 25 июня 2018

Вам не нужно передавать 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})

В квитанции.html просто позвоните

receipt : {{ buyer.Invoice_number }}
...