2011-01-11 3 views
0

У меня есть этот класс пользователей:Джанго не удалось добавить пользователя в группу

class Parent(User): 
    contact_means = models.IntegerField() 
    is_active = False 
    is_staff = False 
    is_superuser = False 
    #parent_id = models.AutoField() 
    class Meta: 
     db_table = 'parent' 

При добавлении родителя в моей странице администратора, я хочу, чтобы автоматически добавить родителя в группу пользователей:

class ParentAdmin(admin.ModelAdmin): 
    def save_model(self,request,modelObj,modelFormIns, change): 
     if not change: #new entry 
      #save regular parent and user 
      parentGroup = Group.objects.get(pk=1) 

      modelObj.save() 
      modelObj.groups.add(parentGroup) 
      #parentGroup.save() 
      #save a record under django-registration 
      profile_callback = None 
      RegistrationProfile.objects.create_inactive_user_from_fk(user = modelObj,send_email = True) 

     else: 
      modelObj.save() 

Это не работает! в группу не добавляется пользователь. Зачем?

+1

Не используйте 'is' по сравнению с False. 'is' предназначен для сравнения идентичности, а не значения. Просто сделайте 'if not change' - или, если нужно,' if change == False'. –

+0

@ Daniel, обновлено. Но то же самое, добавил родитель, но не пользователь в auth_user_group – goh

+0

Хотя @Daniel прав в этом стилистике, вы не должны использовать 'is' там, он технически должен работать как« False »- это одноэлемент, поэтому все объекты, которые являются« False » 'на самом деле ссылаются на тот же самый« ложный »синглтон. –

ответ

0

Я понял, что это может быть поле групп, которое может вызвать проблему. При добавлении exclude = ['groups'] к моему modeladmin, у меня нет никаких проблем. Вероятно, это могло быть так, что после добавления группы программно в мой код выше, группы пользователей после этого смываются, потому что на самой форме не было выбрано ни одной группы.

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