У меня есть модель, определенная так:
class Vote(models.Model):
text = models.CharField(max_length=300)
voters = models.ManyToManyField(CustomUser, blank=True)
game = models.ForeignKey(Game, on_delete=models.CASCADE)
Я хочу, чтобы голос автоматически добавлял всех игроков связанной с ней игры в свой список избирателей при ее создании. Модель Game
имеет метод, который возвращает своих игроков, поэтому я переопределил метод сохранения модели голосования:
def save(self, *args, **kwargs):
super().save(*args, **kwargs) #As the docs state it must be saved before m2m elements can be added
queryset = self.game.get_players
for player in queryset:
self.voters.add(player.id)
Это не работает. Он не выдает ошибку и благополучно сохраняет экземпляр модели через сайт администратора. Однако он, похоже, не добавляет ни одного игрока в поле voters
(а таблица voice_voters остается пустой в БД).
Очевидное устранение неполадок: набор запросов определенно не пустой, определенно вызывается метод сохранения.