gpt4 book ai didi

Django:访问ManytoMany字段

转载 作者:行者123 更新时间:2023-12-02 20:22:45 25 4
gpt4 key购买 nike

我目前面临以下挑战。作为我页面的访问者,您可以在不同的事件之间进行选择。假设您点击了其中一个,现在您位于 id 1 的事件页面。您可以选择不同的门票。假设您选择了门票 1(100 美元)(含 19% 增值税)和门票 2(200 美元)(包括食品),含 19% + 7% 增值税。现在您单击“ checkout ”,下一页将列出以下内容:

1x 门票 1 - 总计:100 美元

1x 门票 2 - 总计:200 美元

总计:300 美元


增值税 1 (19%):57 美元 (19 + 38)

增值税 2 (7%):14 美元


小计:229 美元

我现在正在这个多对多领域苦苦挣扎。您将如何访问各个门票,从相应的多对多字段中获取增值税,然后将它们显示在我的模板末尾?我考虑过元组、字典等,但我真的很难在这里找到最好的方法。您是否遇到过类似的代码挑战?

class TicketTax(models.Model):
event = models.ForeignKey(
Event,
on_delete=models.PROTECT,
related_name='ticket_taxes'
)
name = models.CharField(max_length=100)
percentage = models.DecimalField(
max_digits=5,
decimal_places=4
)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)


class Ticket(models.Model):
event = models.ForeignKey(
Event,
on_delete=models.PROTECT,
related_name='tickets'
)
ticket_tax = models.ManyToManyField(TicketTax, blank=True)
price_gross = models.DecimalField(
max_digits=25,
decimal_places=2
)
name = models.CharField(max_length=100)
description = models.TextField(blank=True, null=True)
start_at = models.DateTimeField()
end_at = models.DateTimeField()
quantity = models.PositiveIntegerField()
status = models.CharField(
max_length=8,
choices=TicketStatus.CHOICES
)
is_archived = models.BooleanField(default=False)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)

更新1:

reserved_item = ReservedItem.objects.filter(order_reference=session_order_reference)
tax_dict = {}
for i in reserved_item:
ticket_subtotal = i.ticket.price_gross * i.quantity

taxes_for_this_ticket = i.ticket.ticket_tax.all()
for taxes in taxes_for_this_ticket:
amount_of_taxes = ticket_subtotal * taxes.percentage
tax_dict[taxes] = amount_of_taxes

更新2(解决方案):

views.py

d = {}
for i in reserved_item:
ticket_subtotal = i.ticket.price_gross * i.quantity

taxes_for_this_ticket = i.ticket.ticket_tax.all()

for taxes in taxes_for_this_ticket:
amount_of_taxes = ticket_subtotal * taxes.percentage

if taxes in d:
d[taxes] += amount_of_taxes
else:
d[taxes] = amount_of_taxes

for key, value in d.items():
print(key.name, " Value: ", value)

模板 - checkout.html:

{% for key, values in taxes.items %}
<p>
{{key.name}}<br>
{{values}}
</p>
{% endfor %}

enter image description here

最佳答案

假设ticket是一个Ticket对象,taxes_for_this_ticket = Ticket.ticket_tax.all()

应该适合你

关于Django:访问ManytoMany字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50929318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com