Объект 'ForwardManyToOneDescriptor' не имеет атрибута 'user_type'

Models.py

class UserType(models.Model):
    owner=models.ForeignKey(User,on_delete=models.CASCADE,default=1)
    user_type=models.CharField(max_length=20,default='admin')

Views.py

def register(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        fname = request.POST.get('firstname')
        lname = request.POST.get('lastname')
        email = request.POST.get('email')
        newpass = make_password(password)
        newuser = User.objects.create(username=username,password=newpass,first_name=fname,last_name=lname,email=email)
        newuser.save()
        usertype = request.POST.get('usertype')
        newtype = UserType.objects.create(user_type=usertype)
        newtype.save()
        messages.success(request, "Registration successful")
        if UserType.owner.user_type == 'Student':
            return redirect('Stuproadd')
        elif UserType.owner.user_type == 'Teacher':
            return redirect('Teachproadd')
        else:
            return redirect('index')
    return render(request, 'register.html')

register.html

<body>
    <h1>Register</h1>
    <div class="container">
    <form method="post">
        {% csrf_token %}
        <label>Username:</label> 
        <input type="text" name="username" placeholder="Enter your username" required /><br><br>
        <label>First Name:</label>
        <input type="text" name="firstname" placeholder="Enter First Name" required /><br><br>
        <label>Last Name:</label>
        <input type="text" name="lastname" placeholder="Enter last name" /><br><br>
        <label>Email:</label>
        <input type="text" name="email" placeholder="Enter your email" required /><br><br>
        <label>password</label> 
        <input type="password" name="password" placeholder="enter your password" required /> <br><br>
        <label>confirm password</label> 
        <input type="password" name="password" placeholder="confirm your password" required /> <br><br>
        <label>Select your Role:</label>
        <input type="radio" name="usertype" value="Student">
        <label>Student</label>
        <input type="radio" name="usertype" value="Teacher">
        <label>Teacher</label>
        <button type="submit">Register</button>
        Already User,<a href="{% url 'index' %}">Login Here</a>
    </form></div>
</body>

Вот код. Я получаю ошибку, так как объект 'ForwardManyToOneDescriptor' не имеет атрибута 'user_type'

После нажатия кнопки register, я хочу перейти к stuproadd, когда тип пользователя студент и teachproadd, когда тип пользователя учитель. Как это сделать? Пожалуйста, помогите

Вам следует использовать UserType объект (то есть newtype в вашем случае) вместо UserType класса.

def register(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        fname = request.POST.get('firstname')
        lname = request.POST.get('lastname')
        email = request.POST.get('email')
        newpass = make_password(password)
        newuser = User.objects.create(username=username,password=newpass,first_name=fname,last_name=lname,email=email)
        newuser.save()
        usertype = request.POST.get('usertype')
        newtype = UserType.objects.create(user_type=usertype)
        newtype.save()
        messages.success(request, "Registration successful")
        if newtype.owner.user_type == 'Student':  # Use `newtype` instead of `UserType`
            return redirect('Stuproadd')
        elif newtype.owner.user_type == 'Teacher':  # Use `newtype` instead of `UserType`
            return redirect('Teachproadd')
        else:
            return redirect('index')
    return render(request, 'register.html')
Вернуться на верх