在研究才Django自关联的过程中,在插入数据时爆出如下错误:

  1. ValueError: Cannot assign "<QuerySet [<Area: China>]>": "Area.parent" must be a "Area" instance.

这是由于把QuerySet当作了instance传进去了。这里需要的拿到QuerySet中的具体实例对象,进行操作。

模型如下:

  1. from django.db import models
  2. class Area(models.Model):
  3. """
  4. 自关联表。
  5. 自关联模型,就是表中的某一列,关联了这个表中的另外一列。最典型的自关联模型就是地区表。
  6. 省、市、县都在一张表里面。省的pid为null,市的pid为省的id,县的pid为市的id。
  7. """
  8. name = models.CharField(max_length=32, verbose_name='行政区名称')
  9. parent = models.ForeignKey('self', verbose_name='上级行政区', on_delete=models.CASCADE, null=True)
  10. def __str__(self):
  11. return self.name
  12. class Meta:
  13. db_table = 'office_area'
  14. verbose_name = '行政区'
  15. verbose_name_plural = verbose_name

屏幕日志:

  1. (DjangoPro) E:\Project\tutorials>python manage.py shell
  2. Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
  3. Type "help", "copyright", "credits" or "license" for more information.
  4. (InteractiveConsole)
  5. >>> from polls.models import Area
  6. >>> Area.objects.all()
  7. <QuerySet [<Area: China>]>
  8. >>> Area.objects.create(name='Peking', parent='China')
  9. Traceback (most recent call last):
  10. File "<console>", line 1, in <module>
  11. File "E:\virtualenvs\DjangoPro\lib\site-packages\django\db\models\manager.py", line 82, in manager_method
  12. return getattr(self.get_queryset(), name)(*args, **kwargs)
  13. File "E:\virtualenvs\DjangoPro\lib\site-packages\django\db\models\query.py", line 420, in create
  14. obj = self.model(**kwargs)
  15. File "E:\virtualenvs\DjangoPro\lib\site-packages\django\db\models\base.py", line 483, in __init__
  16. _setattr(self, field.name, rel_obj)
  17. File "E:\virtualenvs\DjangoPro\lib\site-packages\django\db\models\fields\related_descriptors.py", line 211, in __set__
  18. self.field.remote_field.model._meta.object_name,
  19. ValueError: Cannot assign "'China'": "Area.parent" must be a "Area" instance.
  20. >>> Area.objects.filter(name='China')
  21. >>> a = Area.objects.filter(name='China').first()
  22. >>> a
  23. <Area: China>
  24. >>> Area.objects.create(name='Peking', parent=a)
  25. <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. axios配置

    import axios, { isCancel } from 'axios' import { md5 } from 'vux' import util from '@/libs/util' imp ...

  2. 与 QWidget 有关的 Qt 可视化组件的继承关系图

    与 QWidget 有关的 Qt 可视化组件的继承关系图

  3. ES6基础之——new Set

    Set 对象存储的值总是唯一的 Set 对象方法 方法 描述 add 添加某个值,返回Set对象本身. clear 删除所有的键/值对,没有返回值. delete 删除某个键,返回true.如果删除失 ...

  4. 8 java 笔记

    1 import语句可以简化编程,可以导入指定包下面的某个类或者全部类 2 java.lang,Object类是所有类的父类,要么是其直接父类,要么是其间接父类 3 子类扩展了父类,子类是一种特殊的父 ...

  5. golang编写二叉树

    最近开始找golang 开发工程师职位,针对算法相关二叉树相关常用面试题搞一遍: package tree import (     "math"     "fmt&qu ...

  6. Java高并发程序设计学习笔记(八):NIO和AIO

    转自:https://blog.csdn.net/dataiyangu/article/details/87214773 什么是NIOBuffer && ChannelBuffer举个 ...

  7. eval的使用

    当逻辑字符串是拼接而成的时候可以用eval来判断真假 eg:let a= "22" let b = ">" let c = "1" 用 ...

  8. Redis+Sentinel安装与配置

    在这里我们搭建的是一个1主3从的redis+3个哨兵集群的环境,由于是在一台物理机上,所有我们用端口区分. 物理机IP:192.168.0.12 主节点master端口:6301 从节点slave1端 ...

  9. BLE 5协议栈-主机控制接口(HCI)

    文章参考自:http://www.sunyouqun.com/2017/04/page/3/ .https://www.cnblogs.com/yuqilihualuo/p/9790164.html ...

  10. ioping测试

    ioping 一个实时显示磁盘io延时的工具,以类似ping 的输出一样展示输出结果 常用参数: -c count stop after count requests. -i interval Set ...