在研究才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.的更多相关文章

  1. 10:ValueError: Cannot assign "'2'": "Comment.article" must be a "Article" instance

    报错中出现类似ValueError: Cannot assign "'XXX'": "Comment.article" must be a "XXX& ...

  2. 创建一个接口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类另 ...

  3. 解决:Map的area属性标签鼠标Hover可以给area加背景

    css的area标签是不支持hover的,只有a标签才支持.li标签在IE浏览器下才支持,所以采用jquery的mouseenter和mouseleave事件完成.首先讲jQuery对应的事件:1.m ...

  4. drf序列化器serializers.SerializerMethodField()的用法

    问题描述: 为什么DRF中有时候返回的json中图片是带域名的,有时候是不带域名的呢? 解析: 带域名的结果是在view中对模型类序列化的,DRF在序列化图片的时候 会检查上下文有没有request, ...

  5. rest_framework视图基类与五个扩展类

    1. 两个基类 1)APIView rest_framework.views.APIView APIView是REST framework提供的所有视图的基类,继承自Django的View父类. AP ...

  6. 解决JPA懒加载典型的N+1问题-注解@NamedEntityGraph

    因为在设计一个树形结构的实体中用到了多对一,一对多的映射关系,在加载其关联对象的时候,为了性能考虑,很自然的想到了懒加载. 也由此遇到了N+1的典型问题 : 通常1的这方,通过1条SQL查找得到1个对 ...

  7. ASP.NET MVC系列:Area

    1. Area简介 ASP.NET MVC Area机制构建项目,可以将相对独立的功能模块切割划分,降低项目的耦合度. 2. Area设置Routing 新建Admin Area后,自动创建Admin ...

  8. MVC中实现Area几种方法

    概述        ASP.NET MVC中,是依靠某些文件夹以及类的固定命名规则去组织model实体层,views视图层和控制层的.如果是大规模的应用程序,经常会由不同功能的模块组成,而每个功能模块 ...

  9. Broadmann area (wiki)

    Source: https://en.wikipedia.org/wiki/Brodmann_area Lateral surface Medial serface Areas 3, 1 & ...

随机推荐

  1. centos7上搭建NFS的实践

    NFS 即network file system 可用于向k8s集群提供持久存储 最小化安装centos后  把网卡设置好了后 1.关闭防火墙 [root@NFS ~]# systemctl stop ...

  2. 如果你的评论被WordPress的Akismet插件屏蔽,怎么解封?

    Akismet是Matt Mullenweg早期创办的一个项目,现在已经是Automattic公司的一个专注于剿杀垃圾评论的产品.在Wordpress用户中使用最多,z-blog也有用户在用,由于垃圾 ...

  3. linq多个条件

    public static class PredicateBuilder { /// <summary> /// 机关函数应用True时:单个AND有效,多个AND有效:单个OR无效,多个 ...

  4. STM32F10xxx_异常与中断

    STM32F10xxx_异常与中断 [TOC] 更新记录 version status description date author V1.0 C Create Document 2018.10.2 ...

  5. 导入java web项目时 web.xml第一行报错

    报错信息: Referenced file contains errors (http://java.sun.com/xml/ns/j2ee/j2ee_1_4.xsd). For more infor ...

  6. vue中使用qrcode,遇到两次渲染的问题

    1.安装 qrcodejs2: npm install qrcodejs2 --save 2.页面中引入: import QRCode from "qrcodejs2";   co ...

  7. Mongodb安装后在任务管理器中找不到这个服务

    今天安装mongodb,但是一开始在任务管理器中找不到这个服务,后来查询得知:稍微高一些的系统是需要通过管理员身份运行cmd命令行安装的. orz,找了好久才知道是这个问题. 2333 在任务管理的服 ...

  8. maven入门-- part3 生命周期

    简介: Maven有三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期分别是: Clean Lifecycle 在进行真正的构建之前进行一些清理工作. Default ...

  9. Google 开源的 Python 命令行库:初探 fire

    作者:HelloGitHub-Prodesire HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Arti ...

  10. sql分页查询(2005以后的数据库)和access分页查询

    sql分页查询: select * from ( select ROW_NUMBER() over(order by 排序条件) as rowNumber,* from [表名] where 条件 ) ...