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. 入门系列(一) 微信小程序简介

    一.简介 1.目录结构 首先,我们使用微信公众平台提供的开发者工具,创建一个简单的小程序项目,观察项目的目录结构 不难看出,一个典型的微信小程序,通常包含一个描述整体的主体部分,以及一个描述页面的 p ...

  2. Python基础之生成器、迭代器

    一.字符串格式化进阶 Python的字符串格式化有两种方式: 百分号方式.format方式,由于百分号的方式相对来说比较老,在社区里讨论format方式有望取代百分号方式,下面我们分别介绍一下这两种方 ...

  3. BZOJ 3993 Luogu P3324 [SDOI2015]星际战争 (最大流、二分答案)

    字符串终于告一段落了! 题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=3993 (luogu) https://www.l ...

  4. [luoguP1736] 创意吃鱼法(DP)

    传送门 f[i][j][0] 表示从右下角到左上角,以(i,j)为起点能延伸的最大值 f[i][j][1] 表示从左下角到右上角,以(i,j)为起点能延伸的最大值 up[i][j] 表示(i,j)上面 ...

  5. js中防止输入为空,或者为字母

    function checkNum(){ var num1=document.getElementById("num1").value; var num2=document.get ...

  6. centos7 mysql安装与用户设置

    1.环境:Centos 7.0 64位2.mysql版本:5.73.安装:https://dev.mysql.com/doc/refman/5.7/en/installing.html3.1.创建my ...

  7. 解决CDH SparkStreaming任务启动之后executor不停增长的问题,num-executors配置不管用。

    spark2-submit --class SparkKafka --master yarn --executor-memory 1G --num-executors 6 --driver-memor ...

  8. N - Is It A Tree? 并查集

    A tree is a well-known data structure that is either empty (null, void, nothing) or is a set of one ...

  9. [codevs 1482]路线统计(矩阵乘法)

    题目:http://codevs.cn/problem/1482/ 分析:很像“经过K条边的最短路径条数”.但有所不同,那就是不是边数固定,而是路径总长度固定.看似不能用矩阵乘法了……但注意到每条边的 ...

  10. 学PHP也要懂得HTML

    简单的HTML制做: html超文本标记语言 HTML文件主体结构: <!DOCTYPE html><html> <!--htlm开始标记 --><head& ...