【发布时间】:2020-04-17 09:34:35
【问题描述】:
我有一个看起来像这样的模型,我尝试更新字段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)
【问题讨论】:
-
尝试在你的模型中创建一个方法
def get_price(self): return self.average_entry_price
标签: django