Почему мой "список_друзей" остается пустым, когда срабатывает мой сигнал Django?
Я использую сигнал Django post_save для изменения содержимого базы данных Budget. В моем ответе я получаю friendsList, заполненный идентификаторами пользователей, но когда я использую сигналы post_save, запрос и сохранение в friends_list, я вижу, что список остается пустым.
Мой ответ:
{
    "id": 5,
    "amount": 100,
    "budgetForSplitPay": 1,
    "friendsList": [
      2,
      3
    ]
  }
Мой код сигнала post_save:
@receiver(post_save, sender=SplitPayBudget)
def post_save_splitpay_amount(sender, instance, created, **kwargs):
    Budget.objects.filter(user=instance.budgetForSplitPay.user).update(budgetofUser=F('budgetofUser') - instance.amount)
    friends_list = instance.friendsList.all()
    for friend in friends_list:
        Budget.objects.filter(user=friend.user).update(budgetofUser=F('budgetofUser') - instance.amount)
Моя модель:
class SplitPayBudget(models.Model):
    budgetForSplitPay = models.ForeignKey(Budget, on_delete=models.CASCADE, related_name='budgetForSplitPay')
    friendsList = models.ManyToManyField(Budget, related_name='friendsList', blank=True)
    amount = models.IntegerField(default=0)
    def __str__(self):
        return str(self.budgetForSplitPay.user)
Мое тело вызова API, которое вызывает этот сигнал:
{
  "budgetForSplitPay": "1",
  "amount": 100,
  "friendsList": [2, 3]
}
 Мне нужны решения, с помощью которых мои friends_list должны инициализироваться [2, 3].
Спасибо.
 Я пробовал использовать friends_list = instance.friendsList.all(), но instance.friendsList.all() остается пустым.
Так что я решил свою проблему, воспользовавшись подсказкой @Lax_Sam. Использовал действия m2m_changed и post_add.
Код сигнала:
@receiver(post_save, sender=SplitPayBudget)
def post_save_splitpay_amount(sender, instance, created, **kwargs):
    Budget.objects.filter(user=instance.budgetForSplitPay.user).update(budgetofUser=F('budgetofUser') - instance.amount)
    
@receiver(m2m_changed, sender=SplitPayBudget.friendsList.through)
def update_budget_for_splitpay(sender, instance, action, **kwargs):
    if action == 'post_add':
        for friend in instance.friendsList.all():
            Budget.objects.filter(user=friend.user).update(budgetofUser=F('budgetofUser') - instance.amount)