models代码如下:

class Course(models.Model):
name = models.CharField(unique=True, max_length=64)
price = models.PositiveIntegerField(default=19800)
outline = models.TextField() def __str__(self):
return "%s" % self.name class Meta:
verbose_name_plural = "课程信息表"
verbose_name = "课程信息表" class ClassList(models.Model):
course = models.ForeignKey("Course")
semester = models.PositiveIntegerField(verbose_name="学期")
class_type_choice = ((0, '脱产'),
(1, '周末'),
(2, '网络'),
)
branch = models.ForeignKey("Branch")
class_type = models.PositiveIntegerField(choices=class_type_choice)
teachers = models.ManyToManyField("UserProfile")
start_date = models.DateField()
end_date = models.DateField() def __str__(self):
return "%s(%s)" % (self.course, self.semester) class Meta:
verbose_name_plural = "班级信息表"
verbose_name = "班级信息表"
unique_together = ("course", "semester")

两个表关系如上,ClassList表的course是一个外键,关联上面的Course表。

我想在ClassList中定义__str__函数,就像代码中写的。

我是用django的modelform来处理数据并构建web页面。

结果在进入那个由modelform构建的页面时,发生了异常

 C:\Users\Administrator\AppData\Roaming\Python\Python35\site-packages\django\db\models\fields\related_descriptors.py 下的line 193

        if rel_obj is None and not self.field.null:
raise self.RelatedObjectDoesNotExist(
"%s has no %s." % (self.field.model.__name__, self.field.name)
)
else:
return rel_obj

so,就是那个RelatedObjectDoesNotExist,google了很久,发现有个网友说的很好:

https://stackoverflow.com/questions/26270042/how-do-you-catch-this-exception#comment41357708_26270785

那个票最多的答案。

 正如他所说的Django is amazing when its not terrifying.我此时的内心是崩溃的。。。
代码更改如下:
class ClassList(models.Model):
course = models.ForeignKey("Course")
semester = models.PositiveIntegerField(verbose_name="学期")
class_type_choice = ((0, '脱产'),
(1, '周末'),
(2, '网络'),
)
branch = models.ForeignKey("Branch")
class_type = models.PositiveIntegerField(choices=class_type_choice)
teachers = models.ManyToManyField("UserProfile")
start_date = models.DateField()
end_date = models.DateField() def __str__(self):
try:
return "%s(%s)" % (self.course, self.semester)
except Course.DoesNotExist:
return "%s" % self.semester

正如大神网友所说,我抓住了这个异常,随便返回个不是外键的值就好了。

无FUCK说~~~希望能帮到大家。。。

Django models的诡异异常RelatedObjectDoesNotExist的更多相关文章

  1. django数据库迁移时候异常

    django数据库迁移时候异常 一.错误信息 Django在根据models生成数据库表时报 init() missing 1 required positional argument: 'on_de ...

  2. django models 数据库操作

    django models 数据库操作 创建模型 实例代码如下 from django.db import models class School(models.Model): pass class ...

  3. Django models 操作高级补充

    Django models 操作高级补充 字段参数补充: 外键 约束取消 ..... ORM中原生SQL写法: raw connection extra

  4. Django models Form model_form 关系及区别

    Django models Form model_form

  5. Django models .all .values .values_list 几种数据查询结果的对比

    Django models .all .values .values_list 几种数据查询结果的对比

  6. django models数据类型

    Django Models的数据类型 AutoField IntegerField BooleanField true/false CharField maxlength,必填 TextField C ...

  7. django models 类型整理 version:1.8.3

    django models 类型整理 version:1.8.3 网上百度到的最上面的一篇已经是11年的了,django变化很大,现在把1.8.3版的models类型大致整理了下贴出来 普通键部分 F ...

  8. django models的点查询/跨表查询/双下划线查询

    django models 在日常的编程中,我们需要建立数据库模型 而往往会用到表与表之间的关系,这就比单表取数据要复杂一些 在多表之间发生关系的情形下,我们如何利用models提供的API的特性获得 ...

  9. Django models中关于blank与null的补充说明

    Django models中关于blank与null的补充说明 建立一个简易Model class Person(models.Model): GENDER_CHOICES=( (1,'Male'), ...

随机推荐

  1. out对象的使用

    out对象的使用 制作人:全心全意 out对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区.在使用out对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的 ...

  2. Go语言语法说明

    Go语言语法说明 go语言中的go func(){}() 表示以并发的方式调用匿名函数func 深入讲解Go语言中函数new与make的使用和区别 前言 本文主要给大家介绍了Go语言中函数new与ma ...

  3. Tensorflow word2vec+manage experiments

    Lecture note 5: word2vec + manage experiments Word2vec Most of you are probably already familiar wit ...

  4. MySQL的Date()函数拼接

    SELECT date_format(DATE(a.date_created),'%Y-%c-%d') As dateCreate, SUM(a.sm) As sumAmount, sum(order ...

  5. 理解 LARGE_INTEGER的定义

    http://bbs.csdn.net/topics/310239341 #if defined(MIDL_PASS) typedef struct _LARGE_INTEGER { #else // ...

  6. [bzoj4987]Tree_树形dp

    Tree bzoj-4987 题目大意:给定一颗n个点的有边权的树,选出k个点,使得:$\sum\limits_{i=1}^{k-1}dis_idis_j$最小. 注释:$1\le n\le 3000 ...

  7. 1.3-动态路由协议RIP①

    Dynamic Routing Protocol:动态路由协议 现代IP网络中,主要的动态路由协议: AD/管理距离: 1:DV/距离向量协议:RIP(120)/IGRP(100) 2:LS/链路状态 ...

  8. oracle约束总结(not null/unique/primary key/foreign key/check)

    约束(constraint):对创建的表的列属性.字段进行的限制. 诸如:not null/unique/primary key/foreign key/check 作用范围:         ①列级 ...

  9. Cocos2d-html5入门之2048游戏

    一.介绍 Cocos2d-JS是Cocos2d-x的Javascript版本,它的前身是Cocos2d-html5.在3.0版本以前叫做Cocos2d-html5,从3.0版本开始叫做Cocos2d- ...

  10. PHP第五课 自己主动类型转换与流程控制

    学习概要: 1.了解自己主动类型转换的有哪些 2.了解主要的流程控制语句 3.实例:实现日历表格的写法 自己主动类型转换 1)整型转字符串 echo $num."abc"; 2)字 ...