Django从ModelForm获取模型对象属性

2024-10-01 11:32:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个模型集:

TransactionFormSet = modelformset_factory(Transaction, exclude=("",))

对于此型号:

^{pr2}$

这是模板:

{% for transaction in transactions %}
<ul>
    {% for field in transaction %}
        {% ifnotequal field.label 'Id' %}
        {% ifnotequal field.value None %}
            {% ifequal field.label 'Categories' %}
                // what do i do here?
            {% endifequal %}
            <li>{{ field.label}}: {{ field.value }}</li>
        {% endifnotequal %}
        {% endifnotequal %}
    {% endfor %}
</ul>
{% endfor %}

观点:

def transactions_on_account_view(request, account_id):
    if request.method == "GET":
        transactions = TransactionFormSet(queryset=Transaction.objects.for_account(account_id))
        context = {"transactions":transactions}
        return render(request, "transactions/transactions_for_account.html", context)

我想在一个页面上列出所有的交易信息。 如何列出交易的“账户”属性和“类别”? 目前模板只显示他们的id,我想为用户获得一个好的表示(最好是从他们的str()方法中)。在

唯一可行的方法是遍历表单集,获取Account和Category对象的Id,通过它们的Id获取对象,并将我想要的信息存储在一个列表中,然后将其从列表中提取到模板中,但这对我来说太可怕了。在

有更好的方法吗?在


Tags: 方法in模板idfieldforrequestaccount
1条回答
网友
1楼 · 发布于 2024-10-01 11:32:47

多亏了这些评论,我才明白我所做的一切都是愚蠢和毫无意义的。在

这是有效的:

1)获取所有事务对象

transactions = Transaction.objects.for_account(account_id)

2)传递到模板

^{pr2}$

3)访问属性,完成

  {% for transaction in transactions %}
  <tr>
    <td class="tg-6k2t">{{ transaction.account }}</td>
    <td class="tg-6k2t">{{ transaction.categories }}</td>
    <td class="tg-6k2t">{{ transaction.date }}</td>
    <td class="tg-6k2t">{{ transaction.payee }}</td>
    <td class="tg-6k2t">{{ transaction.comment }}</td>
    <td class="tg-6k2t">{{ transaction.outflow }}</td>
    <td class="tg-6k2t">{{ transaction.inflow }}</td>
    <td class="tg-6k2t">{{ transaction.cleared }}</td>
  </tr>
  {% endfor %}

相关问题 更多 >