gpt4 book ai didi

mysql - Django计算期初余额sql查询

转载 作者:行者123 更新时间:2023-11-29 16:12:54 25 4
gpt4 key购买 nike

任何人都可以帮忙将这个 View 函数逻辑转换为 Django mysql 查询吗?这样我可以获得我想要的结果,但是随着数据库变得庞大,它变得越来越慢。

这里需要计算期初和期末余额。

型号:

class Item(models.Model):
item = models.CharField(max-length=50)
opening_balance = models.PositiveIntegerField()

class Transaction(models.Model):
item_name = models.ForeignKey(Item, on_delete=models.CASCADE)
purchases = models.PositiveIntegerField()
sales = models.PositiveIntegerField()

查看

def display_balances(request):
balances = []

items = Item.objects.all()
for i in items:
opening = i.opening_balance

bal = Transaction.objects.filter(item_name=i)
for item in bal:
dict = {}

opening_balance = opening
closing_balance = opening_balance + item.purchases - item.sales
opening = closing_balance
dict['item']=item.item_name
dict['opening']=opening_balance
dict['purchases']=item.purchases
dict['sales']=item.sales
dict['closing']=closing_balance
balances.append(dict)
return render(request, '123/details.html', {'balances':balances})

模板

{% for b in balances %}
<td>{{b.item}}</td>
<td>{{b.opening}}</td>
<td>{{b.purchases}}</td>
<td>{{b.sales}}</td>
<td>{{b.closing}}</td>
{% endforfor %}

输出:

item    opening purchases sales closing
abc 10 20 10 20
abc 20 10 15 15
abc 15 0 10 5
def 15 15 10 20
abc 5 10 5 10
def 20 0 5 15

等等...

我需要有人帮助我将 View 逻辑转换为 sql 查询,而不是像我一样使用字典列表。当数据库很大时,它会变得很慢。

最佳答案

您只需要一个如下所示的 View ,并将整个反式查询集传递给模板。然后在模板中,在循环中,您应该能够调用 trans_item.item_number.opening_balance 这只是对 db 的一次调用。

 def display_balances(request):
trans = Transaction.objects.all().select_related('item_number')
return render(request, '123/details.html', {'balances': trans})

关于mysql - Django计算期初余额sql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55095665/

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