aus*_*140 6 python django django-models django-authentication
我希望仅在创建用户后将此用户的字段指定为“真”时才将用户添加到组中。创建的每个用户都有一个与之关联的“用户配置文件”。这是实现这种事情的正确方法吗?
模型.py:
def add_group(sender, instance, created, **kwargs):
if created:
sender = UserProfile
if sender.is_in_group:
from django.contrib.auth.models import Group
g = Group.objects.get(name='Some Group')
g.user_set.add(sender)
post_save.connect(add_group, sender=UserProfile)
Run Code Online (Sandbox Code Playgroud)
提前致谢!
另一种选择是使用post_save信号
from django.db.models.signals import post_save
from django.contrib.auth.models import User, Group
def add_user_to_public_group(sender, instance, created, **kwargs):
"""Post-create user signal that adds the user to everyone group."""
try:
if created:
instance.groups.add(Group.objects.get(pk=settings.PUBLIC_GROUP_ID))
except Group.DoesNotExist:
pass
post_save.connect(add_user_to_public_group, sender=User)
Run Code Online (Sandbox Code Playgroud)
你唯一会遇到的麻烦是如果你使用固定装置......(因此DoesNotExists ..)
尝试这个:
def save(self, *args, **kwargs):
# `save` method of your `User` model
# if user hasnt ID - is creationg operation
created = self.id is None
super(YourModel, self).save(*args, **kwargs)
# after save user has ID
# add user to group only after creating
if created:
# adding to group here
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4338 次 |
| 最近记录: |