ValueError: Cannot assign "\<QuerySet [<Area: China>]\>": "Area.parent" must be a "Area" instance.
在研究才Django自关联的过程中,在插入数据时爆出如下错误:
ValueError: Cannot assign "<QuerySet [<Area: China>]>": "Area.parent" must be a "Area" instance.
这是由于把QuerySet当作了instance传进去了。这里需要的拿到QuerySet中的具体实例对象,进行操作。
模型如下:
from django.db import models
class Area(models.Model):
"""
自关联表。
自关联模型,就是表中的某一列,关联了这个表中的另外一列。最典型的自关联模型就是地区表。
省、市、县都在一张表里面。省的pid为null,市的pid为省的id,县的pid为市的id。
"""
name = models.CharField(max_length=32, verbose_name='行政区名称')
parent = models.ForeignKey('self', verbose_name='上级行政区', on_delete=models.CASCADE, null=True)
def __str__(self):
return self.name
class Meta:
db_table = 'office_area'
verbose_name = '行政区'
verbose_name_plural = verbose_name
屏幕日志:
(DjangoPro) E:\Project\tutorials>python manage.py shell
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from polls.models import Area
>>> Area.objects.all()
<QuerySet [<Area: China>]>
>>> Area.objects.create(name='Peking', parent='China')
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "E:\virtualenvs\DjangoPro\lib\site-packages\django\db\models\manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "E:\virtualenvs\DjangoPro\lib\site-packages\django\db\models\query.py", line 420, in create
obj = self.model(**kwargs)
File "E:\virtualenvs\DjangoPro\lib\site-packages\django\db\models\base.py", line 483, in __init__
_setattr(self, field.name, rel_obj)
File "E:\virtualenvs\DjangoPro\lib\site-packages\django\db\models\fields\related_descriptors.py", line 211, in __set__
self.field.remote_field.model._meta.object_name,
ValueError: Cannot assign "'China'": "Area.parent" must be a "Area" instance.
>>> Area.objects.filter(name='China')
>>> a = Area.objects.filter(name='China').first()
>>> a
<Area: China>
>>> Area.objects.create(name='Peking', parent=a)
<Area: Peking>
ValueError: Cannot assign "\<QuerySet [<Area: China>]\>": "Area.parent" must be a "Area" instance.的更多相关文章
- 10:ValueError: Cannot assign "'2'": "Comment.article" must be a "Article" instance
报错中出现类似ValueError: Cannot assign "'XXX'": "Comment.article" must be a "XXX& ...
- 创建一个接口Shape,其中有抽象方法area,类Circle 、Rectangle实现area方法计算其面积并返回。又有Star实现Shape的area方法,其返回值是0,Star类另有一返回值boolean型方法isStar;在main方法里创建一个Vector,根据随机数的不同向其中加入Shape的不同子类对象(如是1,生成Circle对象;如是2,生成Rectangle对象;如是3,生成S
题目补充: 创建一个接口Shape,其中有抽象方法area,类Circle .Rectangle实现area方法计算其面积并返回. 又有Star实现Shape的area方法,其返回值是0,Star类另 ...
- 解决:Map的area属性标签鼠标Hover可以给area加背景
css的area标签是不支持hover的,只有a标签才支持.li标签在IE浏览器下才支持,所以采用jquery的mouseenter和mouseleave事件完成.首先讲jQuery对应的事件:1.m ...
- drf序列化器serializers.SerializerMethodField()的用法
问题描述: 为什么DRF中有时候返回的json中图片是带域名的,有时候是不带域名的呢? 解析: 带域名的结果是在view中对模型类序列化的,DRF在序列化图片的时候 会检查上下文有没有request, ...
- rest_framework视图基类与五个扩展类
1. 两个基类 1)APIView rest_framework.views.APIView APIView是REST framework提供的所有视图的基类,继承自Django的View父类. AP ...
- 解决JPA懒加载典型的N+1问题-注解@NamedEntityGraph
因为在设计一个树形结构的实体中用到了多对一,一对多的映射关系,在加载其关联对象的时候,为了性能考虑,很自然的想到了懒加载. 也由此遇到了N+1的典型问题 : 通常1的这方,通过1条SQL查找得到1个对 ...
- ASP.NET MVC系列:Area
1. Area简介 ASP.NET MVC Area机制构建项目,可以将相对独立的功能模块切割划分,降低项目的耦合度. 2. Area设置Routing 新建Admin Area后,自动创建Admin ...
- MVC中实现Area几种方法
概述 ASP.NET MVC中,是依靠某些文件夹以及类的固定命名规则去组织model实体层,views视图层和控制层的.如果是大规模的应用程序,经常会由不同功能的模块组成,而每个功能模块 ...
- Broadmann area (wiki)
Source: https://en.wikipedia.org/wiki/Brodmann_area Lateral surface Medial serface Areas 3, 1 & ...
随机推荐
- axios配置
import axios, { isCancel } from 'axios' import { md5 } from 'vux' import util from '@/libs/util' imp ...
- 与 QWidget 有关的 Qt 可视化组件的继承关系图
与 QWidget 有关的 Qt 可视化组件的继承关系图
- ES6基础之——new Set
Set 对象存储的值总是唯一的 Set 对象方法 方法 描述 add 添加某个值,返回Set对象本身. clear 删除所有的键/值对,没有返回值. delete 删除某个键,返回true.如果删除失 ...
- 8 java 笔记
1 import语句可以简化编程,可以导入指定包下面的某个类或者全部类 2 java.lang,Object类是所有类的父类,要么是其直接父类,要么是其间接父类 3 子类扩展了父类,子类是一种特殊的父 ...
- golang编写二叉树
最近开始找golang 开发工程师职位,针对算法相关二叉树相关常用面试题搞一遍: package tree import ( "math" "fmt&qu ...
- Java高并发程序设计学习笔记(八):NIO和AIO
转自:https://blog.csdn.net/dataiyangu/article/details/87214773 什么是NIOBuffer && ChannelBuffer举个 ...
- eval的使用
当逻辑字符串是拼接而成的时候可以用eval来判断真假 eg:let a= "22" let b = ">" let c = "1" 用 ...
- Redis+Sentinel安装与配置
在这里我们搭建的是一个1主3从的redis+3个哨兵集群的环境,由于是在一台物理机上,所有我们用端口区分. 物理机IP:192.168.0.12 主节点master端口:6301 从节点slave1端 ...
- BLE 5协议栈-主机控制接口(HCI)
文章参考自:http://www.sunyouqun.com/2017/04/page/3/ .https://www.cnblogs.com/yuqilihualuo/p/9790164.html ...
- ioping测试
ioping 一个实时显示磁盘io延时的工具,以类似ping 的输出一样展示输出结果 常用参数: -c count stop after count requests. -i interval Set ...