2016-12-20 36 views
0

QuerySet APIリファレンスを調べましたが、特定のフィールドの小数点としての実際の値を得ることができるものが見つかりませんでしたオブジェクト。Django - オブジェクトの小数フィールドの値を取得する方法

私が試したことはすべて実際の10進値として返されません。たとえば、Hours.objects.filter(fullname = fullname).values(hours)は、10進数値として時間数を返しません。私はユーザーの時間数を取得しようとしており、数値を数学的に(例えば15.5 + 4.25)追加し、それを19.75として保存します。

+0

時間モデルはどのように見えますか? –

+1

初心者の場合は '.values(" hours ")'(引用符に注意してください)でなければなりません。あなたの 'models.py'を投稿せずに、何も言えません。 – Selcuk

答えて

1

問題を正しく理解していれば、時間表のオブジェクトをフィルタリングして値を更新する必要があります。

まず、このの戻り値のリストは10進数のリストではありません。したがって、hoursを取得する必要がある場合は、これを行う必要がありますhour = result[0].get('hours')。しかし、その後はhours = hours + 1.5を実行することはできません。

import decimal 

result = Hours.objects.filter(fullname=fullname).values('hours') 
hour = result[0].get('hours') 
hour_difference = decimal.Decimal(1.5) 
hour = hour + hour_difference 

しかし、ジャンゴとあなたは更新がはるかに簡単に行うことができます:hoursDecimal種類があり、小数点第一にフロートである1.5を変換する必要があるため。ただ、updateを使用します。

Hours.objects.filter(fullname=fullname).update(hours=20.5) 

あなたは現在の値をインクリメントする必要がある場合、あなたはF expressionでそれを行うことができます。

from django.db.models import F 

Hours.objects.filter(fullname=fullname).update(hours=F('hours') + 1.5) 

これはそれhoursフィールド1.5だと保存するために追加のフィルタに関連したすべての時間のオブジェクトを取得しますそれ。

+1

私は最後のものを使いました。ありがとうございました。 –

関連する問題