Search code examples
djangodjango-modelsdjango-formsdjango-viewsdjango-users

I Want To Add Permissions To User in Django?


i want to add user profile section for example superuser and simple_user so i can add permissions

But When I Submit my Registration Form I Get This Error:

AttributeError at /register/
'User' object has no attribute 'register'

How To Fix And Save User Profile Name?

Here is my Views.py

from django.shortcuts import render , get_object_or_404,redirect
from django.utils import timezone
from blog.models import *
from blog.forms import *
from django.contrib.auth.decorators import login_required
from django.urls import reverse_lazy
from django.contrib.auth.models import User
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic import (TemplateView,ListView,
                                    DetailView,CreateView,
                                    UpdateView,DeleteView)
# Create your views here.

def user_register(request):
    if request.method == "POST":
        reg = register(request.POST or None)
        if reg.is_valid():
            user = reg.save()
            user.profile = "simple_user"
            user.set_password(user.password)
            user.save()
        else:
            print(register.errors)
    else:
        reg = register()

    return render(request,"registration/register.html",{'reg':reg})

Here is my Models.py

class register(models.Model):
    user = models.OneToOneField(User,on_delete="Cascade", related_name="profile")

Here is my Forms.py

class register(forms.ModelForm):
    password = forms.CharField(widget=forms.PasswordInput(attrs={'class':'input-field'}))
    class Meta():
        model = User
        fields = ('username','email','password')

Here is the Error Image:

enter image description here

Any Help Appreciated!


Solution

  • try this

    user = reg.save()
    p1 = register(user=user, #other colums if have)  # register model
    p1.save()
    # user.profile = "simple_user"
    user.set_password(user.password)
    user.save()
    

    hope it helps