レコードを更新したいが、フィールドは文字列で決定されます。それは可能ですか?Djangoクエリの更新 - フィールドは文字列によって決定されます
これは私のモデルである:
class Wallet(models.Model):
user_id = models.IntegerField(blank=True, null=True)
wallet1 = models.DecimalField(max_digits=15, decimal_places=2, blank=True, null=True)
wallet2 = models.DecimalField(max_digits=15, decimal_places=2, blank=True, null=True)
これは私のコードです:
obj.wallet1 = obj.wallet1 - amount
しかし、それはない:私はこれを書いたときに
amount = 200
transfer_from = 'wallet1'
transfer_to = 'wallet2'
obj = Wallet.objects.get(user_id=1)
obj.transfer_from = obj.transfer_from - amount
obj.transfer_to = obj.transfer_to + amount
obj.save()
Djangoはフィールドのみを認識これを認識:
transfer_from = 'wallet1'
obj.transfer_from = obj.transfer_from - amount
「ウォレット」オブジェクトに「transfer_from」という属性はありません。ありがとうございました。
まず、wallet1はWalletクラスのフィールドで、 'wallet1'は文字列です。 Djangoは文字列 'wallet1'によって実際にWalletのwallet1を参照していることを、Djangoがどのように理解すると思いますか。加えて、あなたがオブジェクトを取得することは明らかに属性エラーがありません。また、何が問題なのかobj.wallet1 = obj.wallet1 - 量 –
setattrとgetattrを使うべきです。 setattr(obj、field_obj、value) – durdenk
@RajeshYogeshwar私はフロントエンドからrequest.data ['transfer_from']で 'wallet1'を取得するため、これを行います。そこで私はフロントエンドからのデータを変数に入れました。 – Krisnadi