Kamran Sultanli
Kamran Sultanli

Reputation: 1

ModelForm can't see my attributes-fields, form ProfileForm needs update

I was doing django eshop from the tutorials and everything was going well until everything crashed when I tried to make Cabinet in Users:

here is My views.py

    from django.shortcuts import render, redirect
    from django.contrib.auth.forms import UserCreationForm
    from .forms import RegisterForm
    from django.contrib.auth import authenticate , login as django_login , logout as django_logout
    from .models import Profile
    from .forms import ProfileForm
    
    def cabinet(request):
    django_user = request.user
    profile = Profile.objects.get(user=django_user)
    context = {
        'form': ProfileForm(instance=profile)
    }
    return render(request, 'users/cabinet/main.html', context)

My main.html

    {% extends 'base.html' %}
    {% block content %}

     <h1>Welcome {{ request.user.username }}!</h1>

      <form action="" method="post"> {% csrf_token %}
         <div>
            <label for="">First name</label>
            <input type="text" name="first_name" value="{{ request.user.first_name }}">
         </div>

         <div>
            <label for="">Last name</label>
            <input type="text" name="last_name" value="{{ request.user.last_name }}">
         </div>

         <div>
            <label for="">Email</label>
            <input type="email" name="email" value="{{ request.user.email }}">
         </div>

        {{ form }}

         <button class="btn btn-success">Save</button>
        </form>

     {% endblock content %}

My models.py

    from django.db import models
    from django.contrib.auth.models import User




    class Profile(models.Model):
     user = models.OneToOneField(User, on_delete=models.CASCADE)
    phone_number = models.CharField(max_length=13, blank=True, null=True)
    rate = models.IntegerField(default=4)

    def __str__(self):
        return '{} Rate: {}'.format(self.user.username, self.rate)

and My forms.py

    from django.contrib.auth.forms import UserCreationForm
    from django import forms
    from django.contrib.auth.models import User
    from .models import Profile

     class RegisterForm(UserCreationForm):
        first_name = forms.CharField(max_length=225, required=False)
        second_name = forms.CharField(max_length=225, required=False)
        email = forms.EmailField(max_length=255, required=False)

      def save(self, *args, **kwargs):
        print('Custom save!!')
        print(self.cleaned_data)
        django_user = User.objects.create_user(
            username=self.cleaned_data['username'],
            password=self.cleaned_data['password1'],
            first_name=self.cleaned_data['first_name'],
            last_name=self.cleaned_data['second_name'],
            email=self.cleaned_data['email']
        )

        Profile.objects.create(user=django_user)
        return django_user


     class ProfileForm(forms.ModelForm):
         class Meta:
          model = Profile
          fields = '__all__'

I think the problem in [class ProfileForm] since I get error -.ImproperlyConfigured: Creating a ModelForm without either the 'fields' attribute or the 'exclude' attribute is prohibited; form Prof ileForm needs updating.

But i did mention Fields! why it doesn't work? :(

Upvotes: 0

Views: 71

Answers (0)

Related Questions