程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何解决 django 应用程序中的错误“'NoneType' 对象没有属性 'day'”大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何解决 django 应用程序中的错误“'NoneType' 对象没有属性 'day'”?

开发过程中遇到如何解决 django 应用程序中的错误“'NoneType' 对象没有属性 'day'”的问题如何解决?下面主要结合日常开发的经验,给出你关于如何解决 django 应用程序中的错误“'NoneType' 对象没有属性 'day'”的解决方法建议,希望对你解决如何解决 django 应用程序中的错误“'NoneType' 对象没有属性 'day'”有所启发或帮助;

我在我的应用程序中注意到了这个错误,“'nonetype' 对象没有属性 'day'”。我注意到的是。我有一个名为 course_schedule 的模型,课程安排有周一到周日的选项。如果课程表是部分填充的,也就是说我只填充了一些天,比如一周中完整的 7 天中的 3 天,我会收到错误但是每当我填充课程表时,我不会完全填充课程表模型出现错误,一切正常。

错误日志:

TraceBACk (most recent call last):
  file "C:\Users\Habib\documents\django\FIVERR\Ayyub_SMS\venv\lib\site-packages\django\core\handlers\exception.py",line 47,in inner
    response = get_response(request)
  file "C:\Users\Habib\documents\django\FIVERR\Ayyub_SMS\venv\lib\site-packages\django\core\handlers\base.py",line 181,in _get_response
    response = wrapped_callBACk(request,*callBACk_args,**callBACk_kwargs)
  file "C:\Users\Habib\documents\django\FIVERR\Ayyub_SMS\sms\schoolapp\vIEws.py",line 1754,in sir_course
    get_all = getall(2021,sch.day)

Exception Type: AttributeError at /en/sir_course
Exception Value: 'nonetype' object has no attribute 'day'
@H_394_2@models.py

class Assign_teacher_to_courses(models.Model):
    Course_name = models.ForeignKey(add_courses,on_delete=models.CASCADE)
    Teacher_name = models.ForeignKey(add_teacher_by_manager,on_delete=models.CASCADE)

    def __str__(self):
        return self.Course_name.Course_name+" - "+self.Teacher_name.teacher_ID+" - "+self.Teacher_name.teacher_name

class course_schedule(models.Model):

    days_choices = (
        ("Mon",'Monday'),("Tue",'Tuesday'),('Wed',"Wednessday"),('Thurs',"Thursday"),('Fri',"FrIDay"),('Sat',"Saturday"),("Sun","Sunday"),)

    day = models.CharFIEld(max_length=60,default="Sun")
    time_session = models.CharFIEld(max_length=150,default='8:00am')
    end_session = models.CharFIEld(max_length=150,default='10:00am')

    def __str__(self):
        return self.day

vIEws.py

def sir_course(request):
    if request.method == "POST":
        get_course_name_th = Assign_teacher_to_courses.objects.filter(Teacher_name=get_ID_teach)
        # print(get_course_name_th)

        store_email_teacher_dtta = store_email_teach_new.objects.filter(Teacher_ID=teach_course_ID)

        days = {}

        for course in get_course_name_th:

            # print(course.Course_name.syllabus)

            sch = course_schedule.objects.get(ID=course.Course_name.pk)

            get_all = getall(2021,sch.day)

            Lists = {}
            for n in get_all:

                date = n.strftime("%d/%m/%Y")

                try:
                    if Days[str(datE)]:

                        days[str(datE)].append(str(course.Course_name.Course_Name)+" "+str(course.Course_name.course_codE))

                except KeyError:

                    days[str(datE)] = [str(course.Course_name.Course_Name)+" "+str(course.Course_name.course_codE),]

        # print(days)

        context1 = {'get_course_name_t_cours':get_course_name_th,"days": days}

        return render(request,'teacher_page.HTML',context1)

    else:
        return redirect('/')

解决方法

看起来 sch 可能是 None。

你应该总是把你的对象放在 try...except 块中,或者你可以使用内置的 get_object_or_404

,

遵循 add_courses 模型的 previous question 片段。

class add_courses(models.Model):
    Course_Name = models.CharField(max_length=200,blank=TruE)
    Manager_Name = models.ForeignKey(Manager_login_information,on_delete=models.CASCADE,blank=TruE)
    description = models.TextField(default='',blank=TruE)
    syllabus = models.TextField(default='',blank=TruE)
    student = models.ManyToManyField(add_students_by_manager,blank=TruE)
    schedule = models.ForeignKey(course_schedule,blank=TruE)

    def __str__(self):
        return self.Course_Name

您有以下从 Assign_teacher_to_coursescourse_schedule 的关系路径:

Assign_teacher_to_courses -> add_courses -> course_schedule

因此要获得 course 中每个 get_course_name_th 的时间表,您应该将 sch = course_schedule.objects.get(id=course.Course_Name.pk) 更改为 sch = course.Course_Name.schedule

大佬总结

以上是大佬教程为你收集整理的如何解决 django 应用程序中的错误“'NoneType' 对象没有属性 'day'”全部内容,希望文章能够帮你解决如何解决 django 应用程序中的错误“'NoneType' 对象没有属性 'day'”所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。