我有堅持到一些不尋常的問題,即是需要根據不同的用戶類型來創建配置文件 如。超不能有一個配置文件,而其他用戶可以有輪廓後保存信號觸發之前創建超級用戶功能
我有擴展底座用戶經理
class MyUserManager(BaseUserManager):
def create_user(self, username=None, email=None, password=None):
"""
Creates and saves a User with the given username, email and password.
"""
if not username:
raise ValueError('Must include username')
if not email:
raise ValueError('Users must have an email address')
user = self.model(
username = username,
email = self.normalize_email(email),
gender='MALE',
)
user.set_password(password)
user.save(using=self._db)
print user
return user
def create_superuser(self, username, email, password):
"""
Creates and saves a superuser with the given username, email and password.
"""
user = self.create_user(
username=username,
email=email,
password=password,
)
user.is_admin = True
print user, user.is_admin
user.save(using=self._db)
return user
,然後用下面的信號I創建配置文件,我自己的用戶模型
def new_user_receiver(sender, instance, created, *args, **kwargs):
if not instance.is_admin:
print instance , instance.is_admin , not instance.is_admin
new_profile, is_created = UserProfile.objects.get_or_create(user=instance)
else:
pass
post_save.connect(new_user_receiver, sender=MyUser)
我現在面臨的問題是,上述信號一旦創建用戶並且爲超級用戶創建配置文件就會被觸發
有沒有一種方法可以避免爲超級用戶創建配置文件?
謝謝。
HM,不明白你的問題因爲你已經在你的問題 – madzohan
上回答了'if not instance.is_admin:'它會進入該塊,即使它對超級用戶 –
當超級用戶被創建時,stance.is_admin是錯誤的..雖然它不是真實的 –