为什么这个Django形式在创建新对象时会绕过我的自定义管理器?

时间:2014-04-24 08:36:28

标签: python django

我有一个基本的Django ModelForm来创建一个新用户:

class UserCreationForm(forms.ModelForm):

    class Meta:
        model = User

    # stuff here

    def save(self, commit=True):
        user = super(UserCreationForm, self).save(commit=False)
        if commit:
            user.save()
        return user

我还有一个用于处理用户创建功能的自定义UserManager,它还创建了一个UserProfile并将其附加到用户:

class UserManager(BaseUserManager):

def create_user(self, email, password=None):
    """Create a standard user."""

    email = self.normalize_email(email)
    user = self.model(email=email)
    user.set_password(password)
    user.save()
    profile = UserProfile()
    profile.user = user
    profile.save()
    return user

class User(AbstractBaseUser, PermissionsMixin):
     objects = UserManager()

但是,每当成功调用UserCreationForm时,它都会创建User,但不会创建UserProfile。

我的问题是,为什么UserCreationForm会绕过我的自定义UserManager?是否有一些特殊的语法我需要给表单告诉它我的模型有一个自定义管理器?

我也使用django.views.generic.CreateView作为视图,所以我想我可以手动更改post方法来创建User和UserProfile,但是我想知道为什么在出现之前它失败了考虑到它似乎是一个非常基本的操作,一些hacky修复。

由于

0 个答案:

没有答案