Error is “ModelForm has no model class specified.”
forms.py code
JavaScript
x
15
15
1
from django.contrib.auth.models import User
2
from basic_app.models import UserProfileInfo
3
4
class UserForm(forms.ModelForm):
5
password = forms.CharField(widget=forms.PasswordInput())
6
7
class Meta():
8
models = User
9
fields = ('username', 'email', 'password')
10
11
class UserProfileInfoForm(forms.ModelForm):
12
class Meta():
13
model = UserProfileInfo
14
fields = ('portfolio_site', 'profile_pic')
15
models.py code
JavaScript
1
15
15
1
from django.db import models
2
from django.contrib.auth.models import User
3
# Create your models here.
4
5
class UserProfileInfo(models.Model):
6
7
user = models.OneToOneField(User, on_delete=models.CASCADE)
8
#additional
9
portfolio_site = models.URLField(blank=True)
10
11
profile_pic = models.ImageField(upload_to='profile_pics', blank=True)
12
13
def __str__(self):
14
return self.user.username
15
views.py code
JavaScript
1
38
38
1
from django.shortcuts import render
2
from basic_app.forms import UserProfileInfoForm, UserForm
3
# Create your views here.
4
def index(request):
5
return render(request, 'basic_app/index.html')
6
7
def register(request):
8
9
registered = False
10
11
if request.method == 'POST':
12
13
user_form = UserForm(data=request.POST)
14
profile_form = UserProfileInfoForm(data=request.POST)
15
16
if user_form.is_valid() and profile_form.is_valid():
17
user = user_form.save()
18
user.set_password(user.password)
19
user.save()
20
21
profile = profile_form.save(commit=False)
22
profile.user = user
23
24
if 'profile_pic' in request.FILES:
25
profile.profile_pic = request.FILES['profile_pic']
26
27
profile.save()
28
29
registered = True
30
else:
31
print(user_form.errors, profile_form.errors)
32
else:
33
user_form = UserForm()
34
profile_form = UserProfileInfoForm()
35
36
return render(request, 'basic_app/registration.html',
37
{'user_form' : user_form, 'profile_form' : profile_form, 'registered' : registered})
38
The error is occurs when I’m trying to create a new user form (user_form = UserForm()
).
Although in my meta class I set models to the User
model imported from django.contrib.auth.models
.
Advertisement
Answer
I think your spellings in your forms are wrong could you try to correct :Changes Meta() to Meta: then models to model
JavaScript
1
12
12
1
class UserForm(forms.ModelForm):
2
password = forms.CharField(widget=forms.PasswordInput())
3
4
class Meta:
5
model = User
6
fields = ('username', 'email', 'password')
7
8
class UserProfileInfoForm(forms.ModelForm):
9
class Meta:
10
model = UserProfileInfo
11
fields = ('portfolio_site', 'profile_pic')
12