首页 > 解决方案 > 我想通过将数量和价格相乘来生成餐厅账单如何做到这一点

问题描述

在我的发票食品名称和食品价格代码中,都在本地主机门户上显示食品名称,因此请查看我的外键并指导如何将产品价格和数量相乘。我正在向您展示添加产品表和发票表,它们的表格也请注意并指导我

模型.py

class AddFood(models.Model):
    food_name = models.CharField(max_length=20)
    food_price = models.PositiveIntegerField()
    company = models.ForeignKey(CompRegister, on_delete=models.CASCADE)
    res = models.ForeignKey(ResRegister, on_delete=models.CASCADE)
    def __str__(self):
        return self.food_name


class GenerateInvoice(models.Model):
    foods_name = models.ForeignKey(AddFood, null=True, on_delete=models.CASCADE, related_name='food_n')
    foods_price = models.ForeignKey(AddFood, null=True, on_delete=models.CASCADE, related_name='food_p')
    quantity = models.PositiveIntegerField()
    company = models.ForeignKey(CompRegister, on_delete=models.CASCADE)
    res = models.ForeignKey(ResRegister, null=True, on_delete=models.CASCADE)
    start_date = models.DateTimeField(auto_now_add=True)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

    def __str__(self):
        return self.res, self.foods_name

    def total_price(self):
        return AddFood.food_price * self.quantity

表格.py

class FoodForm(forms.ModelForm):

    def __init__(self, user, *args, **kwargs):
        super(FoodForm, self).__init__(*args, **kwargs)
        self.fields['res'].queryset = ResRegister.objects.filter(res=True, company__user_id=user)

    class Meta:
        model = AddFood
        exclude = ['company','price','food']
        fields = '__all__'


class InvoiceForm(forms.ModelForm):

    def __init__(self, user, *args, **kwargs):
        super(InvoiceForm, self).__init__(*args, **kwargs)
        self.fields['foods_name'].queryset = AddFood.objects.filter(company__user_id=user)
        self.fields['foods_price'].queryset = AddFood.objects.filter(company__user_id=user)

    class Meta:
        model = GenerateInvoice
        exclude = ['company','res','start_date',]
        fields = '__all__'

视图.py

def generate_invoice(request):
    u = CompRegister.objects.get(user_id=request.user)
    if request.method == 'POST':
        form = InvoiceForm(request.user, request.POST)

        if form.is_valid():
            form_r = form.save(commit=False)
            form_r.company = u
            form_r.save()
            return redirect('company:cart_page')
        else:
            print(form.errors)
    else:
        form = InvoiceForm(request.user)
    return render(request, 'comp/generate_invoice.html', {'form': form})

generate_invoice.html

<!DOCTYPE html>
{% extends 'Comp_base.html' %}
{% block head %}

    <meta charset="UTF-8">
    <title>Generate Invoice</title>

{% endblock %}
{% block body %}

    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">Generate Invoice</button>
    </form>
{% endblock %}
</html>

标签: djangodjango-modelsdjango-viewsdjango-forms

解决方案


推荐阅读