Python Django-从ModelForm获取模型对象属性
我有一个模型集:Python Django-从ModelForm获取模型对象属性,python,django,Python,Django,我有一个模型集: TransactionFormSet = modelformset_factory(Transaction, exclude=("",)) 使用此模型: class Transaction(models.Model): account = models.ForeignKey(Account) date = models.DateField() payee = models.CharField(max_length = 100) categori
TransactionFormSet = modelformset_factory(Transaction, exclude=("",))
使用此模型:
class Transaction(models.Model):
account = models.ForeignKey(Account)
date = models.DateField()
payee = models.CharField(max_length = 100)
categories = models.ManyToManyField(Category)
comment = models.CharField(max_length = 1000)
outflow = models.DecimalField(max_digits=10, decimal_places=3)
inflow = models.DecimalField(max_digits=10, decimal_places=3)
cleared = models.BooleanField()
这是模板:
{% 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 %}
我想在一页上列出所有交易信息。
如何列出交易的“账户”属性和“类别”?
目前模板只显示他们的id,我想为用户获得一个好的表示(最好是从他们的str()方法)
我所能看到的唯一可行的方法是迭代表单集,获取Account和Category对象的Id,通过它们的Id获取对象,并将我想要的信息存储在列表中,然后将其从那里拉到模板中,但这对我来说相当可怕
有更好的方法吗?多亏了这些评论,我意识到我所做的是相当愚蠢和毫无意义的 这项工作: 1) 获取所有事务对象
transactions = Transaction.objects.for_account(account_id)
2) 传递到模板
context = {"transactions":transactions,}
return render(request, "transactions/transactions_for_account.html", context)
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 %}
{%用于事务中的事务%}
{{transaction.account}}
{{transaction.categories}
{{transaction.date}
{{transaction.paye}
{{transaction.comment}}
{{transaction.outflow}
{{transaction.inflow}
{{transaction.cleared}}
{%endfor%}
我不明白你在问什么。所有这些嵌套的ifequal/ifnotequal语句是用于什么的?\uuuu str\uuuu
是modelmultipechoicefield的默认表示形式,您的多对多字段将在表单上使用该表示形式;您是否尝试过{{field}
?{{field}}类别为我提供了一个选择框,对于不同帐户的帐户下拉列表,我只想显示所选帐户(没有下拉框)和所选类别(没有选择)。我不想输入任何更改/信息,我只想将事务的所有属性显示为文本。那么为什么要使用表单呢?
{% 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 %}