У меня есть модель, которая выглядит следующим образом, и я пытаюсь обновить поле average_entry_price
, но моя проблема в том, что не происходит обновления со значения 7.0 до 7074.0, хотя объект создан. Как видите, created
возвращает False
.
Нет сообщения об ошибке, и я думаю, что синтаксис правильный, так как я сначала пытаюсь сопоставить поля market
и account
, что, кажется, работает нормально, потому что объект создан правильно в начале, и затем я говорю Django обновить оставшееся поле average_entry_price
. Я что-то здесь упускаю?
print(type(market))
print(type(a))
print('new value is', position['price'])
obj, created = Position.objects.get_or_create(
market=market,
account=a,
defaults={
'average_entry_price': position['price']
},
)
print(obj.average_entry_price)
print(created)
Затем возвращается:
<class 'marketsdata.models.Market'>
<class 'trading.models.Account'>
new value is 7074.0
7.0
False
models.py
class Position(models.Model):
account = models.ForeignKey(Account,
on_delete=models.CASCADE,
related_name='position',
null=True
)
market = models.ForeignKey(Market,
on_delete=models.CASCADE,
related_name='position',
null=True
)
average_entry_price = models.DecimalField(max_digits=8,
decimal_places=1,
null=True
)
class Meta:
verbose_name_plural = "Positions"
def __str__(self):
return str(self.market)