私は他のユーザーがプロファイルポストは、信号火災が前に作成、保存、スーパーユーザー機能
を有することができる 例えば.superプロファイルを持っていなければなりません、別のユーザーのタイプに基づいてプロファイルを作成する必要があるいくつかの珍しい問題に捕まってしまっていますiは、ベース・ユーザー・マネージャを
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
を拡張した後、私は、プロファイルを作成する以下の信号を使用して、自分のユーザー・モデルを有する
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ではありません:あなたは、あなたの
create_superuser
機能でこれを呼び出す必要がありますあなたがすでに 'instance.is_adminではない:'に答えているので、あなたの質問で – madzohanスーパーユーザーのためにshudntであってもそのブロックに入る –
スーパユーザが作成されたときにstance.is_adminはfalseです。本当に恥ずかしいですが –