如何基于另一个具有外键关系的模型更新 Django 模型的字段
How to Update field of Django model based on another model with foreign key relation
我有两个模型 Betslip 和 Bet,我想将 Betslip.settled_status 的值更新为 'Lost',如果 Bet.settlement_status 是 'half_lost' 或 'lost',谁能为它创建一个方法?
class Betslip(models.Model):
SETTLED_STATUS_CHOICE = (
('InGame','InGame'),
('Won','Won'),
('Lost','Lost'),
('Refunded','Refunded')
)
settled_status = models.CharField(choices=SETTLED_STATUS_CHOICE,max_length=30)
class Bet(models.Model):
SETTLEMENT_STATUS_CHOICE = (
('','select'),
('won','won'),
('lost','lost'),
('refund','Refund'),
('half_won','half_won'),
('half_lost','half_lost'),
)
settlement_status = models.CharField(choices=SETTLEMENT_STATUS_CHOICE,max_length=30,)
betslip = models.ForeignKey(Betslip,on_delete=models.CASCADE,related_name='bet')```
你可以这样做:
在 Bet 模型中试试这个:
def update_settled_status(self):
if self.settlement_status in ['lost','half_won']:
self.betslip.settled_status = 'Lost'
self.betslip.save()
你可以从了解@属性
并且为了使用投注对象获取投注的结算状态 属性 您可以在 Betlip 属性 中使用“反向相关对象查找”又名 _set(因为您已经在 Bet 中使用了 Betslip 的外键)
我有两个模型 Betslip 和 Bet,我想将 Betslip.settled_status 的值更新为 'Lost',如果 Bet.settlement_status 是 'half_lost' 或 'lost',谁能为它创建一个方法?
class Betslip(models.Model):
SETTLED_STATUS_CHOICE = (
('InGame','InGame'),
('Won','Won'),
('Lost','Lost'),
('Refunded','Refunded')
)
settled_status = models.CharField(choices=SETTLED_STATUS_CHOICE,max_length=30)
class Bet(models.Model):
SETTLEMENT_STATUS_CHOICE = (
('','select'),
('won','won'),
('lost','lost'),
('refund','Refund'),
('half_won','half_won'),
('half_lost','half_lost'),
)
settlement_status = models.CharField(choices=SETTLEMENT_STATUS_CHOICE,max_length=30,)
betslip = models.ForeignKey(Betslip,on_delete=models.CASCADE,related_name='bet')```
你可以这样做:
在 Bet 模型中试试这个:
def update_settled_status(self):
if self.settlement_status in ['lost','half_won']:
self.betslip.settled_status = 'Lost'
self.betslip.save()
你可以从