Как получить 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()