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. 调用OpenSSL实现RSA加解密和签名操作

    调用OpenSSL实现RSA加解密和签名操作 RSA公钥可以从证书和公钥文件,RSA私钥可以从私钥文件中提取.OpenSSL使用了一种BIO抽象IO机制读写所用文件,可以打开文件相关联的BIO,通过B ...

  2. 2.js原型的基本概念

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. BZOJ 1666 USACO 2006 Oct. 奶牛的数字游戏

    直接模拟2333 #include<cstdio> #include<algorithm> using namespace std; int n,ans; void read( ...

  4. 51NOD欧姆诺姆和项链——KMP算法(非水题)

    >>点击进入原题测试<< 思路:好久不见,今天要开始真正写题了.这个题之前我的理解有点问题,导致写了很久最终都是一直都只能过样例.需要注意的是输出中每一个“1”都是和别的输出相 ...

  5. i2c中应答信号信号总结

    i2c如果用到主从的关系的时候,需要考虑: give_ack();//从器件发送,来表示占用总线,让sda总线保持低电平. get_ack();//主器件判断是否有器件占用总线,sda有器件占用,是低 ...

  6. Navicat premium连接Oracle报ORA-12541错误

    1:ORA-12541 原因:Oracle TNS监听服务没开 解决:

  7. Microsoft 根证书计划弃用 SHA-1 哈希算法

    Microsoft 根证书计划弃用 SHA-1 哈希算法 微软官方2016年1月12日发布安全通报,自2016年1月1日起Microsoft 已经发布代码弃用变更,也就是说2016年1月1号后用SHA ...

  8. BNUOJ 23905 滑雪

    滑雪 Time Limit: 1000ms Memory Limit: 65536KB This problem will be judged on UESTC. Original ID: 13096 ...

  9. reids桌面管理工具:RedisDesktopManager下载、使用

    概要:一款好用的Redis桌面管理工具,支持命令控制台操作,以及常用,查询key,rename,delete等操作. 下载软件,请点击下面链接,进入下载页,选择对应版本: https://redisd ...

  10. Uva122 Trees on the level

    Background Trees are fundamental in many branches of computer science. Current state-of-the art para ...