.values()
クエリセットとは異なるものを取得しようとしていますが、適切な値を返すことに問題があります。メソッドmodel
を使用して属性を取得できるように自分を作成するにはどうすればよい.values()
ですか?
モデルの__str__
メソッドを変更して辞書を返そうとしましたが、それが機能しないか、間違っています。
class Settings(models.Model):
bb_bonus_qualify = models.CharField(max_length=16, default=38.00)
service_breakpoint = models.CharField(max_length=16, default=1700.00)
def __str__(self):
return '%s: %s, %s: %s' % (
'bb_bonus', self.bb_bonus_qualify, 'service_breakpoint', self.service_breakpoint)
と言いたいのですがSettings.objects.last().values('bb_bonus')
、の値が返されますself.bb_bonus_qualify
。私が得ると思われる一般的なエラーは次のとおりです。AttributeError: 'Settings' object has no attribute 'values'
ここでの問題は.last()
、最後の Settings
オブジェクトを取得することです。したがって.values('bb_bonus')
、Settings
オブジェクトを呼び出します。モデルには.values(..)
メソッドがないため、何も返されません。
ただし、次の方法で、クエリセットから特定の列の値を取得できます。
Settings.objects.values_list('bb_bonus_qualify', flat=True).last()
したがって、ここでは.values_list(..)
[Django-doc]を使用します。これは、列の名前をパラメーターとして受け入れます。その後、通常QuerySet
、これらの値を持つリストのを返します。ただし、1つの列を指定すると、次に、ドキュメントにあるように:
1つのフィールドのみを渡す場合は、
flat
パラメーターを渡すこともできます。の場合True
、これは、返される結果が1タプルではなく単一値であることを意味します。
つまりQuerySet
、特異値を作成してから、そのクエリセットの最後のエントリを取得します。クエリセットからすべての要素をフェッチするわけではなく.last()
、データベースで実行するクエリに「注入」されるため、結果は最後のレコードのその列のスカラー値になります。
.values_list(..)
これ実行される必要がある前に、.last()
それ以外の場合は、あなたがに話しているので、Settings
オブジェクト、しないようにQuerySet
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加