Я хочу обновить запись, но поле определяется строкой. Можно ли это сделать?Обновление запроса 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)
Это мой код:
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()
Джанго распознавать только поле, когда я пишу это:
obj.wallet1 = obj.wallet1 - amount
но это не признать это:
transfer_from = 'wallet1'
obj.transfer_from = obj.transfer_from - amount
Говорят, что у объекта «Кошелек» нет атрибута «transfer_from». Спасибо.
Прежде всего, кошелек1 является полем класса «Кошелек», а «кошелек» - это строка. Как вы ожидаете, что Django поймет, что по строке «wallet1» вы на самом деле ссылаетесь на кошелек 1 из Кошелька. Кроме того, очевидно, что вы получаете объект, не имеющий ошибки атрибута. Кроме того, что не так с obj.wallet1 = obj.wallet1 - amount –
Вы должны использовать setattr и getattr. setattr (obj, field_obj, value) – durdenk
@RajeshYogeshwar Я делаю это, потому что я получаю «кошелек1» с моего интерфейса с request.data ['transfer_from']. Поэтому я помещаю данные с переднего конца в переменную. – Krisnadi