【发布时间】:2018-08-30 23:45:41
【问题描述】:
我有一个这样定义的模型:
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 模型有一个返回其玩家的方法,所以我重写了 Vote 模型的 save 方法:
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 字段中(并且 db 中的 vote_voters 表仍然为空)。
明显的故障排除:查询集肯定不为空,肯定是调用了save方法。
【问题讨论】:
-
为什么要添加
player.id而不是player? -
@Selcuk 我都试过了,都没有用
-
你能指定你使用的是哪个版本的Django吗?
-
啊,刚刚看到您使用的是 Django admin。见this question
标签: python django django-models