1

私はDjangoを使用しています。私は、日付、カテゴリ、説明などの他の情報とともに、データベースからの予算トランザクションのリストを表示しようとする表示機能に取り組んでいます。(トランザクションは私のモデルなので、トランザクションオブジェクトです。)通貨はintへの変換と10進数への変換を処理する方がおそらく簡単だったため、トランザクション量は整数形式でdbに格納されます(ここで見たいくつかの提案に従います)。(今はよくわかりません。)オブジェクトのセットを表示用のテンプレートに送信する前に、10進数に変換し直そうとしています。各Transactionオブジェクトから金額を引き出し、10進数に変換して、オブジェクトに戻す方法がわかりません。私はこのようなことをしようとしています:

object_list = Transaction.objects.all()

for obj in range(0,object_list.count()):
    object_list[obj].dec_amount = Decimal(object_list[obj].amount/100).quantize(Decimal('0.01'))

そして、今のところ非常に単純なテンプレート:

{% for item in object_list %}

<tr>
<td>{{ item.dec_amount }}</td>
<td>{{ item.category }}</td>
<td>{{ item.date }}</td>

</tr>

{% endfor %}

基本的に、各オブジェクトに新しいdec_amount属性を作成しようとしていますが、それが機能するかどうかはわかりません。dec_amountは私のテンプレートでは利用できません。また、オブジェクトを反復処理して量を更新したり、10進値で新しい属性を作成したりするためのより洗練された方法が必要だと思います。または、QuerySetをプルするより効率的な方法があるかもしれませんが、その方法で2つのクエリ間で行を簡単にまとめる方法がわかりません。ループを使用して、QuerySetのすべてのオブジェクトの1つの属性を変更するにはどうすればよいですか?

助けてくれてありがとう。私はイライラしていると言わざるを得ません-PHPから来ているので、Decimal全体はもっと複雑に見えます。

編集:私の用語を少し改善しようとしました。

4

2 に答える 2

2

テンプレートの10進値にアクセスする必要があるだけの場合は、次のようなプロパティを検討できます。

class Transaction(models.Model):
    @property
    def dec_amount(self):
        return Decimal(self.amount / 100).quantize(Decimal('0.01'))
于 2012-12-11T04:04:05.240 に答える
1

ジェシー・ザ・ゲームの答えは正しいです。ループを次のように書き直すこともできます。

for obj in object_list:
    obj.dec_amount = Decimal(object_list[obj].amount/100).quantize(Decimal('0.01'))
于 2012-12-11T09:32:48.970 に答える