Django rest framework:__str__ returned non-string (type NoneType) 真正原因
出错原因:
用户表是Django中核心的表,当这个表类字段中有一个这样的函数
def __str__(self):
return self.name
在Django用户表设计时候有个字段容易犯这个失误,虽然表字段约束没错
name = models.CharField(max_length=30, null=True, blank=True, verbose_name='姓名')
也就是说这个字段可以为空,也就是说用 __str__ 函数返回时候,为空,什么都么有,报类型错误
那,如何解决?
在使用 __str__返回函数时候,指定的字段不能为空,也就是有两个方式,一个是设置这个字段不能为空,并设置一个默认值,另一个方式是更改一个不为空的返回字段
name = models.CharField(max_length=30, default='', verbose_name='姓名')
或
def __str__(self):
return self.username
最优雅的解决方案为
def __str__(self):
if self.name:
# 如果不为空则返回用户名
return self.name
else:
# 如果用户名为空则返回不能为空的对象
return self.username
总结:
这个是我用户表错误,本质上问题是__str__不能返回空类型数据,也就是说,这个返回数据不能是空字段的数据,在其他表设计时候,也需要注意这个问题,最好不要指定返回一个为空和default=''数据,虽然default=''是可以返回的
Django rest framework:__str__ returned non-string (type NoneType) 真正原因的更多相关文章
- Django restful Framework 之Requests and Response 方法
前言: 本章主要介绍REST framework 内置的必要的功能. Request objects Response objects Status codes Wrapping API views ...
- Django REST framework+Vue 打造生鲜超市(四)
五.商品列表页 5.1.django的view实现商品列表页 (1)goods/view_base.py 在goods文件夹下面新建view_base.py,为了区分django和django res ...
- Vue+Django REST framework打造生鲜电商项目
1-1 课程导学 2-1 Pycharm的安装和简单使用 2-2 MySQL和Navicat的安装和使用 2-3 Windows和Linux下安装Python2和Python3 2-4 虚拟环境的安装 ...
- Django序列化&django REST framework
第一章.Django序列化操作 1.django的view实现商品列表页(基于View类) # 通过json来序列化,但手写字典key代码量较大,容易出错:还有遇到时间,图片序列化会报错 from g ...
- Django REST framework完全入门
Django REST framework 一个强大灵活的Django工具包,提供了便捷的 REST API 开发框架 我们用传统的django也可以实现REST风格的api,但是顶不住Django ...
- 04 Django REST Framework 认证、权限和限制
目前,我们的API对谁可以编辑或删除代码段没有任何限制.我们希望有更高级的行为,以确保: 代码片段始终与创建者相关联. 只有通过身份验证的用户可以创建片段. 只有代码片段的创建者可以更新或删除它. 未 ...
- python 全栈开发,Day94(Promise,箭头函数,Django REST framework,生成json数据三种方式,serializers,Postman使用,外部python脚本调用django)
昨日内容回顾 1. 内容回顾 1. VueX VueX分三部分 1. state 2. mutations 3. actions 存放数据 修改数据的唯一方式 异步操作 修改state中数据的步骤: ...
- Django REST framework 源码剖析
前言 Django REST framework is a powerful and flexible toolkit for building Web APIs. 本文由浅入深的引入Django R ...
- Django REST framework 总结(附源码剖析)
Django 的 CBV&FBV Django FBV, function base view 视图里使用函数处理请求 url url(r‘^users/‘, views.users), v ...
随机推荐
- margin负值的作用
一.左右负margin改变自身宽度 当元素不存在width或者width:auto的时候,负margin会增加元素的宽度. html <div class="parent"& ...
- Python的Django框架完成一个完整的论坛(源码以及思路)
一个完整的论坛,登录.注册.发表.头像.点赞.评论.分页.阅读排行等 使用Django2,Python3.5 开发工具:Pycharm5 需要的知识:Python基础知识,Django原理的理解以及使 ...
- Java点滴之类与对象
类的概述 Java是一门纯粹的面向对象(OOP)语言,面向对象程序是由多个对象所组成的,而对象的创建又必须依赖于类,那么什么又是类呢?在现实世界中,我们常常将多个具有相同或相似特征的对象分为一类,并冠 ...
- Percona XtraBackup的部分备份与恢复/单库备份/单表备份/指定库备份/指定表备份
本文是翻译的Percona XtraBackup 2.2版的官方文档,原文地址在此:https://www.percona.com/doc/percona-xtrabackup/2.2/innobac ...
- 博客已经迁移到 http://imbotao.top 也会同步到这儿
完全是看到别人搭建的 hexo + github Pages 博客界面很好看,很简洁,自己也喜欢折腾,就鼓捣了一个. 也在阿里云买了自己的域名,个人感觉在博客的样式和功能上花费了太多的时间,不过现在终 ...
- keynote 代码高亮
brew install highlight (同时会安装 Lua 和 Boost) highlight -K 18 -s Vampire -u 'utf-8' -O rtf test.html | ...
- spring 实现邮箱发送
使用spring mail 实现的邮箱发送功能,包括附件的发送(附件发送要保证附件存在的路径是真实),使用maven集成jar包,通过spring mvc 实现前后台的调用,发送方使用的是163邮箱, ...
- 数据结构之二叉树(BinaryTree)
导读 二叉树是一种很常见的数据结构,但要注意的是,二叉树并不是树的特殊情况,二叉树与树是两种不一样的数据结构. 目录 一. 二叉树的定义 二.二叉树为何不是特殊的树 三.二叉树的五种基本形态 四.二叉 ...
- python 序列话模块 常用
什么是序列化? 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flatte ...
- SpringBoot(二)Web整合开发
Spring Boot (二):Web 综合开发 本篇文章接着上篇内容继续为大家介绍spring boot的其它特性(有些未必是spring boot体系桟的功能,但是是spring特别推荐的一些开源 ...