Django models的诡异异常RelatedObjectDoesNotExist
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构建的页面时,发生了异常


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
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的更多相关文章
- django数据库迁移时候异常
django数据库迁移时候异常 一.错误信息 Django在根据models生成数据库表时报 init() missing 1 required positional argument: 'on_de ...
- django models 数据库操作
django models 数据库操作 创建模型 实例代码如下 from django.db import models class School(models.Model): pass class ...
- Django models 操作高级补充
Django models 操作高级补充 字段参数补充: 外键 约束取消 ..... ORM中原生SQL写法: raw connection extra
- Django models Form model_form 关系及区别
Django models Form model_form
- Django models .all .values .values_list 几种数据查询结果的对比
Django models .all .values .values_list 几种数据查询结果的对比
- django models数据类型
Django Models的数据类型 AutoField IntegerField BooleanField true/false CharField maxlength,必填 TextField C ...
- django models 类型整理 version:1.8.3
django models 类型整理 version:1.8.3 网上百度到的最上面的一篇已经是11年的了,django变化很大,现在把1.8.3版的models类型大致整理了下贴出来 普通键部分 F ...
- django models的点查询/跨表查询/双下划线查询
django models 在日常的编程中,我们需要建立数据库模型 而往往会用到表与表之间的关系,这就比单表取数据要复杂一些 在多表之间发生关系的情形下,我们如何利用models提供的API的特性获得 ...
- Django models中关于blank与null的补充说明
Django models中关于blank与null的补充说明 建立一个简易Model class Person(models.Model): GENDER_CHOICES=( (1,'Male'), ...
随机推荐
- Django-Rest framework中文翻译-Request
REST framework的Request类扩展自标准的HttpRequest,增加了REST framework灵活的请求解析和请求验证支持. 请求解析 REST framework的Reques ...
- 介绍一个比较酷东西:HTML5 桌面通知(Notification API)
Notification API 是 HTML5 新增的桌面通知 API,用于向用户显示通知信息.该通知是脱离浏览器的,即使用户没有停留在当前标签页,甚至最小化了浏览器,该通知信息也一样会置顶显示出来 ...
- 腾讯云:搭建 Node.js 环境
搭建 Node.js 环境 安装 Node.js 环境 任务时间:5min ~ 10min Node.js 是运行在服务端的 JavaScript, 是基于 Chrome JavaScript V8 ...
- Java基础学习总结(88)——线程创建与终止、互斥、通信、本地变量
线程创建与终止 线程创建 Thread类与 Runnable 接口的关系 public interface Runnable { public abstract void run(); ...
- RabbitMQ-rabbitMq各个特性的使用(三)
准备 1.引入客户端和配置文件依赖类 <dependency> <groupId>com.rabbitmq</groupId> <artifactId> ...
- [USACO5.3]校园网Network of Schools 缩点
题目描述 一些学校连入一个电脑网络.那些学校已订立了协议:每个学校都会给其它的一些学校分发软件(称作“接受学校”).注意即使 B 在 A 学校的分发列表中, A 也不一定在 B 学校的列表中. 你要写 ...
- springboot整合dubbo的简单案例
使用框架: jdk 1.8 springboot-2.1.3 dubbo-2.6 spring-data-jpa-2.1.5 一.开发dubbo服务接口: 按照Dubbo官方开发建议,创建一个接口项目 ...
- systemtap --diskio
http://blog.163.com/digoal@126/blog/static/1638770402013101993142404
- 怎样在Linux下使用Markdown进行文档工作
怎样在Linux下使用Markdown进行文档工作 在Linux系统中,编辑markdown能够用retext工具: sudo apt-get install retext retext Releas ...
- 我的CSDN博客停止更新通告
我的CSDN博客停止更新通告 自从2001年在CSDN发表第一篇博客開始,至今天(2014年6月11日)为止,算起来我己经在CSDN博客上"呆"了13年.共发表251篇原创文章,有 ...