Hi everyone,

I'm trying to get an account app with custom authentification and 
registration.
Admin user can access to django admin site, simple user with required 
permission can add new users through a CreateView and a form.

But, I get this quite annoying error message which tell me 'CreateView is 
missing a QuerySet' . I have no idea how to fix it.
I understand from the doc that queryset reference model objects and that if 
model is alreay define, then it's useless, i feel wrong here ...

Can someone explain me clearly what are those queryset and help me fixing 
my code below ?

#models.py

class UserProfileManager(BaseUserManager):

    def create_user(self, password=None, **kwargs):
        user = self.model(**kwargs)
        user.set_password(password)
        user.save(using=self.db)
        return user

    def create_superuser(self, password=None, **kwargs):
        user = self.create_user(password=password)
        user.is_admin = True
        user.save(using=self.db)
        return user


class UserProfile(AbstractBaseUser):
    __MAX_LENGTH = 100
    username = models.CharField(max_length=__MAX_LENGTH, verbose_name="Nom 
d'utilisateur", unique=True)
    first_name = models.CharField(max_length=__MAX_LENGTH, 
verbose_name="Prénom", default="")
    last_name = models.CharField(max_length=__MAX_LENGTH, verbose_name="Nom", 
default="")
    email = models.EmailField(max_length=__MAX_LENGTH, verbose_name="Adresse 
e-mail", default="")
    perm_on_user = models.BooleanField(verbose_name="Gestion des utilisateurs", 
default=False)
    perm_on_news = models.BooleanField(verbose_name="Gestion de la newsletter", 
default=False)
    is_admin = models.BooleanField(verbose_name="Administrateur", default=False)

    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = ['first_name', 'last_name', 'email', 'perm_on_user', 
'perm_on_news', 'is_admin', ]

    object = UserProfileManager()

    class Meta:
        verbose_name = "Utilisateur"

    def has_perm(self, perm, obj=None):
        return True

    def has_module_perms(self, app_label):
        return True

    @property
    def is_staff(self):
        return self.is_admin
#admin.py


class UserCreationForm(forms.ModelForm):
    password = forms.CharField(label='Mot de passe', widget=forms.PasswordInput)
    password_confirm = forms.CharField(label='Confirmation du mot de passe', 
widget=forms.PasswordInput)

    class Meta:
        model = UserProfile
        fields = ('first_name', 'last_name', 'email', 'perm_on_user', 
'perm_on_news', 'is_admin',)

    def clean_password_confirm(self):
        # Check that the two password entries match
        password = self.cleaned_data.get("password")
        password_confirm = self.cleaned_data.get("password_confirm")
        if password and password_confirm and password != password_confirm:
            raise forms.ValidationError("Les mots de passes ne correcpondent 
pas")
        return password

    def save(self, commit=True):
        # Save the provided password in hashed format
        user = super().save(commit=False)
        user.set_password(self.cleaned_data["password"])
        if commit:
            user.save()
        return user


class UserModificationForm(forms.ModelForm):
    """A form for updating users. Includes all the fields on
    the user, but replaces the password field with admin's
    password hash display field.
    """

    password = forms.CharField(label='Mot de passe', widget=forms.PasswordInput)
    password_confirm = forms.CharField(label='Confirmation du mot de passe', 
widget=forms.PasswordInput)

    class Meta:
        model = UserProfile
        fields = ('first_name', 'last_name', 'email', 'perm_on_user', 
'perm_on_news', 'is_admin',)

    def clean_password_confirm(self):
        # Check that the two password entries match
        password = self.cleaned_data.get("password")
        password_confirm = self.cleaned_data.get("password_confirm")
        if password and password_confirm and password != password_confirm:
            raise forms.ValidationError("Les mots de passes ne correcpondent 
pas")
        return password

    def save(self, commit=True):
        # Save the provided password in hashed format
        user = super().save(commit=False)
        user.set_password(self.cleaned_data["password"])
        if commit:
            user.save()
        return user


class UserAdmin(BaseUserAdmin):
    # The forms to add and change user instances
    form = UserModificationForm
    add_form = UserCreationForm

    # The fields to be used in displaying the User model.
    # These override the definitions on the base UserAdmin
    # that reference specific fields on auth.User.
    list_display = ('username', 'first_name', 'last_name', 'email', 
'perm_on_user', 'perm_on_news', 'is_admin',)
    list_filter = ('perm_on_user', 'perm_on_news', 'is_admin')
    fieldsets = (
        (None, {'fields': (
        'username', 'password', 'password_confirm', 'first_name', 'last_name', 
'email', 'perm_on_user', 'perm_on_news',
        'is_admin',)}),
    )
    # add_fieldsets is not a standard ModelAdmin attribute. UserAdmin
    # overrides get_fieldsets to use this attribute when creating a user.
    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('username', 'first_name', 'last_name', 'email', 
'password', 'password_confirm', 'perm_on_user',
                       'perm_on_news', 'is_admin'),
        }),
    )
    search_fields = ('username',)
    ordering = ()
    filter_horizontal = ()


admin.site.register(UserProfile, UserAdmin)
admin.site.unregister(Group)

#view.py


class CreateUserView(CreateView):
    model = UserProfile
    fields = ['first_name', 'last_name', 'email', 'perm_on_user', 
'perm_on_news', 'is_admin', ]



Thanks you for helping me !

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/6b15b7c4-cf2b-48e7-8ebe-e44c7f99b65a%40googlegroups.com.

Reply via email to