Django - ManyToMany字段到用户返回无

时间:2016-01-28 19:21:04

标签: python django django-authentication django-1.8 django-permissions

那是我的模特

class Permissions(models.Model):
group = models.ForeignKey(Group)
Book = models.ForeignKey(Book)
users = models.ManyToManyField(User)

我实现了一个自定义保存方法来设置权限并将用户保存到一个组:

   def save(self,*args,**kwargs):
    super(Permissions,self).save(*args,**kwargs)
    assign_perm('view_Book',self.group, self.book)
    for gen in self.book.books.all():
        assign_perm('view_Genre', self.group, gen)
    for u in self.users.all():
        u.groups.add(self.group)
        u.save()

有了这个,我可以设置权限,但用户不能添加到组中。我错过了什么吗? 当我print(users)时,返回为None或[]。 任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题并使用m2m_signal修复了。

这是一个例子:

def add_users_book_permissions(sender, **kwargs):

   permissions = kwargs['instance']
   for u in permissions.users.all():
       u.groups.add(permission.group)
       u.save()

m2m_changed.connect(add_users_book_permission,Permissions.users.through)

答案 1 :(得分:0)

您的permission对象刚刚创建,因此没有用户。这就是为什么你得到一个空列表。

您可能希望使用:User.objects.all()来获取所有用户,无论其权限如何。