class Permission(models.Model): is_default = models.BooleanField('是否默认') group = models.ForeignKey('Group') class Post(models.Model): group = models.ForeignKey('Group') permissiOns= models.ManyToManyField('Permission') title = models.CharField('Title', max_length=32)
希望在 Post 创建时,根据 group 设置默认的 permissions,但是尝试使用 signal 的方式设置保存后并未生效。
@receiver(post_save, sender=Post) def set_default_permissions(sender, instance, created, *args, **kwargs): if instance.group is not None and created: defaults = Permission.objects.filter(is_default=True, group=instance.group).all() instance.product.add(*defaults) instance.save()
请教一下,应该如何在创建 Post 时设置 permissions 才是最好的呢?
![]() | 1 tinypig OP Google 了一晚上找不到答案。。 |
![]() | 2 cocoakekeyu 2017-09-15 10:08:29 +08:00 ![]() 你得调式一下,确定 post 保存后注册的函数会执行 |
![]() | 3 tinypig OP @cocoakekeyu 我调试过,set_default_permissions 确实是执行了的,但是 Post.permissions 还是为空。 |
![]() | 4 tinypig OP @cocoakekeyu 我发现是在 Django admin 中创建就没有,但是自己手动 create 的就没问题。 |