Как обновить поле модели Django на основе другой модели с помощью отношения внешнего ключа

У меня есть две модели 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()

вы можете понять о @property из этого обсуждения а для использования объекта bets для получения свойства статуса расчета ставок вы можете использовать "обратный поиск связанного объекта" aka _set внутри свойства Betlip (поскольку вы использовали внешний ключ для Betslip в Bet)

Вернуться на верх