/account_settings/中不存在相关对象



这是我的项目的代码,其中包含文件models.py、
views.py和urls.py。它向我显示了对象没有存在Exception Type: RelatedObjectDoesNotExistCCD_ 2。

现在我在哪里犯了错误?我是个新手。我搜索了很多,但无法解决。

# 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'),

]'''

在您的视图函数:assignmentaccount_settings中,您有此行。

student = request.user.student

我相信错误的意思是,你还没有为这个用户创建任何StudentObject。从你的注册视图来看,我看不出你也在这里创建了一个。我说得对吗?如果每个USER都应该有一个STUDENT对象,您可以像这样在注册时添加一个,然后填写所有空白字段。

@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')
############################
newstudent = Student(user=request.user)
newstudent.save()
############################

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)

最新更新