Могу ли я написать цикл для заполнения словаря совокупными значениями для создания моей таблицы - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь вызвать мой объект транзакции и пройти по нему, чтобы создать словарь совокупных значений из объекта транзакции. Я пытаюсь заполнить таблицу этими значениями. Можно ли это сделать, и если да, могу ли я получить совет. Я хочу, чтобы словарь заполнялся каждой отдельной валютой, с которой пользователь провел транзакцию, текущим количеством валюты, которой он владеет, таким образом, сумма (current_amount) для валюты для пользователя, сумма покупки в валюте для пользовательской суммы (purchase_amount), сумма продажи в валюте для usersum (продано), текущая стоимость в валюте для пользователя, стоимость покупки в валюте для пользователя, и стоимость продажи в валюте для пользователя. У меня есть данные, жестко запрограммированные прямо сейчас для целей тестирования, но я хочу сделать цикл, чтобы заполнить json результатами запроса

ниже идентификатора таблицы нравится заполнять

 {% for total_transaction in total_transactions %}
            <tr>
                <td>{{total_transaction.currency}}</td>
                <td>{{total_transaction.current_amount}}</td>
                <td>{{total_transaction.purchased_amount}}</td>
                <td>{{total_transaction.sold_amount}}</td>
                <td>{{total_transaction.current_value}}</td>
                <td>{{total_transaction.purchased_value}}</td>
                <td>{{total_transaction.sold_value}}</td>
            </tr>
            {% endfor %}

функция ниже

portfolio(request):

    count = Transaction.objects.filter(owner=request.user).values('currency').distinct(),

    context = {
        'total_transactions': [{
            'currency': 'BTC', 'current_amount': 3, 'purchased_amount': 5, 'sold_amount': 2, 'current_value': 180,
            'purchased_value': 400, 'sold_value': 380}, {
            'currency': 'LTC', 'current_amount': 3, 'purchased_amount': 5, 'sold_amount': 2, 'current_value': 180,
            'purchased_value': 400, 'sold_value': 380}, {
            'currency': 'XRP', 'current_amount': 3, 'purchased_amount': 5, 'sold_amount': 2, 'current_value': 180,
            'purchased_value': 400, 'sold_value': 380}
        ]
    }

    return render(request, 'webapp/portfolio.html', context, {'title': 'Portfolio'})

1 Ответ

0 голосов
/ 26 апреля 2019

Если ваша модель транзакции уже содержит все эти поля, вы можете просто использовать это:

portfolio(request):
    #define each sub query like this
    sum_currency_amount = Sum('amount').order_by('currency')
    #the main query will be to get all transaction per users following by each annotate that allows you to define some key and value for the queryset.
    transactions = Transaction.objects.filter(owner=request.user).annotate(
            currency_amount = sum_currency_amount,
            #other subquery here
    ),
    return render(request, 'webapp/portfolio.html', context, {'title': 'Portfolio','total_transactions':transactions})

Шаблон может остаться прежним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...