Как получить many2many queryset модели при ее создании (во время выполнения save())

У меня есть модель "Команда" для футбольной команды и модель "Соревнование" для футбольного матча. При создании модели Contest имя присваивается автоматически. Затем, во время сохранения(), я хочу изменить название конкурса на что-то связанное с командами, которые соревнуются. Поэтому в моей модели Contest у меня есть поле ManyToMany 'teams', связанное с моей моделью 'Team'.

В процессе сохранения() я использовал super().save(*args, **kwargs) перед получением объекта, так что он существует. Затем я хочу получить кверисет с помощью self.objects.teams.all(), но каждый раз кверисет пуст: <QuerySet []>. Тем не менее, объект существует. Такое ощущение, что Django еще не связал команды или что-то в этом роде. Как я могу это сделать?

Модель конкурса :

class Contest(models.Model):
name = models.CharField(max_length=16, primary_key=True, unique=True, default="InactiveContest", blank=True)  # Ex: PSGvMNC_09/2017
id = models.IntegerField(default=1)
teams = models.ManyToManyField(Team, verbose_name="opposants")
date = models.DateTimeField(blank=True)
winner = models.ForeignKey(Team, verbose_name='gagnant', related_name='winner', on_delete=models.SET_NULL, blank=True, null=True)
loser = models.ForeignKey(Team, verbose_name='perdant', related_name='loser', on_delete=models.SET_NULL, blank=True, null=True)
active = models.BooleanField(default=False)


def save(self, *args, **kwargs):
    if self._state.adding:
        self.active = False
        # Django's id imitation
        last_id = Contest.objects.all().aggregate(Max('id')).get('id__max')
        if last_id is not None:
            self.id = last_id + 1
    super().save(*args, **kwargs) # Now I can get it 

    teams = self.teams.all()
    if not teams:
        raise ValueError("Not teams.") # RAISE EVERYTIME beacause Queryset is empty !
    else:
        print("teams check !")
        super().save()
Вернуться на верх