Django - ManyToMany 字段到用户 return None
Django - ManyToMany field to User return None
这是我的模特
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)
时 return 是 None,或 []。
谁能帮帮我?
您的 permission
对象刚刚创建,因此他没有用户。这就是为什么你得到一个空列表。
可能您想使用:User.objects.all()
,获取所有用户而不考虑权限。
我遇到了类似的问题并使用 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)
这是我的模特
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)
时 return 是 None,或 []。
谁能帮帮我?
您的 permission
对象刚刚创建,因此他没有用户。这就是为什么你得到一个空列表。
可能您想使用:User.objects.all()
,获取所有用户而不考虑权限。
我遇到了类似的问题并使用 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)