1

, что моя модельДжанго - ManyToMany поля для возвращения пользователя 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() 

С этим я могу установить разрешение но пользователи не добавляются в группу. Я что-то упускаю? Когда i print(users) возвращение равно None или []. Может ли кто-нибудь мне помочь?

+0

Что вы ожидаете пользователей? Вы выбрали некоторых пользователей в ModelForm? –

+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) 
+0

Это работает, спасибо! –

0

Ваш permission объект только что создан, поэтому у него нет пользователей. Вот почему вы получаете пустой список.

Возможно, вы хотите использовать: User.objects.all(), чтобы получить всех пользователей независимо от разрешения.

 Смежные вопросы

  • Нет связанных вопросов^_^