Может кто-нибудь помочь преобразовать эту логику функции представления в запрос MySQL Django. с этим я могу получить результаты, которые я хочу, но поскольку база данных становится громоздкой, она становится все медленнее и медленнее.
Здесь необходимо рассчитать начальные и конечные сальдо.
Модель:
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()
View
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})
Template
{% 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 Logic в sql-запрос вместо использования List of Dictioneries, как я делаю. становится медленным, когда база данных громоздка.