- Создать пользователя
- Создать профиль указанного пользователя
- Добавить пользователя в группу
# Signals
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
group = Group.objects.get(name='generics')
instance.groups.add(group)
Провел некоторую отладку и обнаружил, что даже если я закомментирую Profile.objects.create(user=instance), я все равно не могу добавить группы в экземпляр.
Я что-то упустил? У меня нет никаких ошибок.
Изменить 1: Это пользовательская модель пользователя.
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
first_name = None
last_name = None
class Meta:
verbose_name_plural = 'users'
def __str__(self):
return self.username
Я просто переместил first_name и Last_name в таблицу Profile. Больше ничего не делал, как видите. Пользователи и профили успешно создаются, поэтому эта пользовательская модель работает нормально.
Хотя в этом нет необходимости, я добавил instance.save() после добавления группы, но это не так. все равно не будет работать. Администратор показывает, что группы не были добавлены, а таблица базы данных core_user_groups все еще пуста.
Изменить 2: Добавить консольный тест
Еще более странно, я попробовал добавить группу с помощью оболочки ./manage.py, и все работает нормально.
>>> from core.models import User
>>> from django.contrib.auth.models import Group
>>> group = Group.objects.get(pk=1)
>>> group
>>> user = User.objects.get(pk=23)
>>> user
>>> user.groups.add(group)
# At this point I check the admin and the db and it worked. Hmmm....but how to do it within a signal...
Подробнее здесь: https://stackoverflow.com/questions/563 ... n-a-signal