Here is the code of my project that contains the files models.py,
views.py and urls.py. It showing me the error that object does not
exist. Exception Type: RelatedObjectDoesNotExist
Exception Value: User has no student
.
Now where have I made a mistake? I'm a newbie. I searched a lot but unable to resolve it.
# Create your models here.
class School(models.Model):
schoolid = models.AutoField(primary_key=True)
schoolname = models.CharField(max_length=50, null= True)
# schoolimage = models.ImageField()
schoolcontactno = models.CharField(max_length=13, null=
True)
schooladdress = models.CharField(max_length=500)
createddate = models.DateTimeField(null= True)
schoolemail = models.EmailField(null= True)
password = models.CharField(max_length=13,null= True)
def __str__(self):
return self.schoolname
class Section(models.Model):
sectionid = models.AutoField(primary_key=True)
sectionname = models.CharField(max_length=500,null= True)
schoolid = models.ForeignKey(School,null=
True,on_delete=models.SET_NULL)
class Status(models.Model):
statusid = models.AutoField(primary_key=True)
statustype = models.CharField(max_length=50,null=True)
class Client(models.Model):
userid = models.AutoField(primary_key=True)
username = models.CharField(max_length=50,null = True)
ceratedon = models.DateTimeField(null = True)
email = models.CharField(max_length=50,null = True)
password = models.CharField(max_length=13)
certificatetypename = models.CharField(max_length=100,null
= True)
cnic = models.CharField(max_length=50,null = True)
contactnumber = models.CharField(max_length=13,null = True)
# image = models.CharField(max_length='',null = True)
status = models.ForeignKey(Status,
null=True,on_delete=models.DO_NOTHING)
confirmpassword = models.CharField(max_length=13,null =
True)
class TblClass(models.Model):
classid = models.AutoField(primary_key=True)
# name = models.CharField(max_length=50,null= True)
schoolid = models.ForeignKey(School,null=
True,on_delete=models.SET_NULL)
class RoleName(models.Model):
roleid = models.AutoField(primary_key=True)
rolename = models.CharField(max_length=50,null=True)
class Course(models.Model):
courseid = models.AutoField(primary_key=True)
coursedescription = models.CharField(max_length=500,null=
True)
coursename = models.CharField(max_length=50,null= True)
userid = models.ForeignKey(Client,null=
True,on_delete=models.DO_NOTHING)
code = models.CharField(max_length=50,null= True)
videolink = models.CharField(max_length=500 ,null= True)
roleid =
models.ForeignKey(RoleName,null=True,on_delete=models.DO_NOTHING)
createddate = models.DateTimeField()
# imagelink = models.CharField(max_length='')
duration = models.DateTimeField()
# longdes = models.CharField(max_length='')
coursetype = models.CharField(max_length=50)
classid =
models.ForeignKey(TblClass,null=True,on_delete=models.DO_NOTHING)
# assignto = models.CharField(max_length='')
status = models.BinaryField(null = True)
class Day(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=50,null =True)
class Exam(models.Model):
examid = models.AutoField(primary_key=True)
examname = models.CharField(max_length=500,null=True)
class SchoolAssignment(models.Model):
assignmentid = models.AutoField(primary_key=True)
assignmentname = models.CharField(max_length=50,null=True)
classid =
models.ForeignKey(TblClass,null=True,on_delete=models.SET_NULL)
courseid = models.ForeignKey(Course,
null=True,on_delete=models.SET_NULL)
assignmenturl = models.CharField(max_length=500,null=True)
duration = models.DateTimeField(null=True)
schoolid =
models.ForeignKey(School,null=True,on_delete=models.SET_NULL)
createddate = models.DateTimeField(null=True)
userid =
models.ForeignKey(Client,null=True,on_delete=models.DO_NOTHING)
class TimeTable(models.Model):
id = models.AutoField(primary_key=True)
classid =
models.ForeignKey(TblClass,null=True,on_delete=models.DO_NOTHING)
courseid =
models.ForeignKey(Course,null=True,on_delete=models.DO_NOTHING)
sectionid =
models.ForeignKey(Section,null=True,on_delete=models.DO_NOTHING)
starttime = models.DateTimeField(null=True)
endtime = models.DateTimeField(null=True)
allocationstatus =
models.CharField(max_length=100,null=True)
dayid =
models.ForeignKey(Day,null=True,on_delete=models.DO_NOTHING)
schoolid =
models.ForeignKey(School,null=True,on_delete=models.DO_NOTHING)
class Student(models.Model):
user = models.OneToOneField(User,null
=True,on_delete=models.CASCADE)
id = models.AutoField(primary_key=True)
sname = models.CharField(max_length=200, null=True)
phone = models.CharField(max_length=200, null=True)
email = models.CharField(max_length=200, null=True)
date_created = models.DateTimeField(auto_now_add=True,
null=True)
regno = models.CharField(max_length=20,null=True)
registrationdate = models.DateTimeField(null =True)
address = models.CharField(max_length=100,null =True)
# classid = models.ForeignKey(TblClass,null=True,
on_delete=models.SET_NULL)
# schoolid = models.ForeignKey(School,null=True,
on_delete=models.SET_NULL)
# sectionid = models.ForeignKey(Section,null=True,
on_delete=models.SET_NULL)
std_profile = models.ImageField(default="download.png",
null = True,blank = True)
def __str__(self):
return self.sname
class StudentResult(models.Model):
studentresultid = models.AutoField(primary_key=True)
studentid = models.ForeignKey(Student,null
=True,on_delete=models.DO_NOTHING)
courseid =
models.ForeignKey(Course,null=True,on_delete=models.DO_NOTHING)
totalmarks = models.IntegerField(null = True)
marksobtained = models.IntegerField(null = True)
percentage = models.DecimalField(max_digits=2,
decimal_places=2,null = True)
schoolid = models.ForeignKey(School,null =
True,on_delete=models.DO_NOTHING)
classid = models.ForeignKey(TblClass,null =
True,on_delete=models.DO_NOTHING)
createddate = models.DateTimeField(null = True)
sectionid =
models.ForeignKey(Section,null=True,on_delete=models.DO_NOTHING)
examid =
models.ForeignKey(Exam,on_delete=models.DO_NOTHING, null=True)
class SubmitAssignment(models.Model):
uploadid = models.AutoField(primary_key=True)
assignmentid = models.ForeignKey(SchoolAssignment,
on_delete=models.DO_NOTHING)
schoolid =
models.ForeignKey(School,on_delete=models.SET_NULL,null = True)
studentid = models.ForeignKey(Student,
on_delete=models.SET_NULL,null = True)
courseid = models.ForeignKey(Course,
on_delete=models.SET_NULL,null = True)
uploadurl = models.CharField(max_length=500,null = True)
createddate = models.DateTimeField(auto_now_add=True,null =
True)
class StudentHistory(models.Model):
studenthistoryid = models.AutoField(primary_key=True)
studentid = models.ForeignKey(Student,null=True,
on_delete=models.DO_NOTHING)
lastclass = models.CharField(max_length=50,null=True)
createddate =
models.DateTimeField(auto_now_add=True,null=True)
lastclasssection =
models.CharField(max_length=50,null=True)
def __str__(self):
return self.studentid
# Create your views here.
@login_required(login_url='loginPage')
def home(request):
return render(request,'home.html')
@unauthenticated_user
def register(request):
form = CreateUserForm()
if request.method == 'POST':
form = CreateUserForm(request.POST)
if form.is_valid():
user = form.save()
username = form.cleaned_data.get('username')
group = Group.objects.get(name = 'student')
user.groups.add(group)
messages.success(request, 'Account was created for ' +
username)
return redirect('loginPage')
context = {'form':form}
return render(request, 'register.html', context)
@unauthenticated_user
def loginPage(request):
if request.method == 'POST':
username = request.POST.get('username')
password =request.POST.get('password')
user = authenticate(request, username=username,
password=password)
if user is not None:
login(request, user)
return redirect('userpage')
else:
messages.info(request, 'Username OR password is
incorrect')
context = {}
return render(request, 'login.html', context)
def logoutUser(request):
logout(request)
return redirect('loginPage')
@login_required(login_url='loginPage')
def about(request):
return render(request,'about.html')
@login_required(login_url='loginPage')
def contact(request):
return render(request,'home.html')
@login_required(login_url='loginPage')
@allowed_users(allowed_roles=['student'])
def userPage(request):
return render(request, 'user.html')
@login_required(login_url='loginPage')
@allowed_users(allowed_roles=['student'])
def account_settings(request):
student = request.user.student
form = StudentForm(instance=student)
if request.method == 'POST':
form = StudentForm(request.POST,
request.FILES,instance=student)
if form.is_valid():
form.save()
context = {'form':form}
return render(request, 'account_settings.html', context)
@login_required(login_url='loginPage')
@allowed_users(allowed_roles=['student'])
def assignments(request):
student = request.user.student
form = StudentForm(instance=student)
if request.method == 'POST':
form = StudentForm(request.POST,
request.FILES,instance=student)
if form.is_valid():
form.save()
context = {'form':form}
return redirect(request,'assignment.html',context)
"""it is urls of the code"""
urlpatterns = [
path("", views.home, name = 'home'),
path("register/", views.register, name = 'register'),
path("about/", views.about, name = 'about'),
path("contact/", views.contact, name = 'contact'),
path("login/", views.loginPage, name = 'loginPage'),
path("logout/", views.logoutUser, name = 'logout'),
path("userpage/", views.userPage, name = 'userpage'),
path("account_settings/", views.account_settings, name =
'account_settings'),
path("assignments/", views.assignments, name = 'assignments'),
]'''
In your view functions: assignment and account_settings you have this line.
I believe what the error is saying, is that you haven't created any StudentObject for this User yet. Looking at your registration view, I don't see you are creating one here too. Am I correct? In case every USER should have a STUDENT object, you could add one upon registration like this and fill out all the blank fields later.