在研究才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. Spring 配置文件注入

    一.Spring配置文件注入 package com.zxguan.demo; public class Person { private String name; private int age; ...

  2. dev chart使用

    public class LineChartHelp { #region 折线图 /// <summary> /// 创建折线图 /// </summary> public v ...

  3. Centos7:nginx的安装,配置及使用

    安装依赖 yum install gcc-c++//gcc环境 yum install -y pcre pcre-devel//PCRE:nginx的http模块使用pcre来解析正则表达式 yum ...

  4. 初识 vue------简单介绍

    /**     vue         作者:尤雨溪         类型:MVVM      准确的来说是MV框架     为什么要学习vue         1.传统的项目是通过操作dom元素来修 ...

  5. jQuery快速入门专题

    jQuery入门专题 本人博客特点:最高重要等级为*****(五红星),依次减少代表重要性相对较低! 一.jQuery简介 jQuery 是一个 JavaScript的一个库,也就是说jQuery是基 ...

  6. 第二十四篇 jQuery 学习6 删除元素

    jQuery 学习6 删除元素   上节课我们做了添加元素,模拟的是楼主发的文章,路人评论,那么同学们这节课学了删除之后,去之前的代码上添加一个删除,模拟一个楼主删除路人的评论. jQuery的删除方 ...

  7. 5.NIO_ Selector选择器

    1.阻塞与非阻塞 传统的 IO 流都是阻塞式的.也就是说,当一个线程调用 read() 或 write() 时,该线程被阻塞,直到有一些数据被读取或写入, 该线程在此期间不能执行其他任务因此,在完成网 ...

  8. jmeter 压力测试tcp

    cmd下管理员执行 jmeter 界面 英文版 中文切换以后不能执行 最多跑905个线程 线程限制 查看结果数 界面会跑死 windows环境 注意:测试1万的tcp并发连接  大爷的 window最 ...

  9. ADO.net 增删改查封装DBhelper

    using System; using System.Collections.Generic; using System.Data.SqlClient;//引用数据库客户端 using System. ...

  10. 浅谈浏览器存储(cookie、localStorage、sessionStorage)

    今天我们从前端的角度了解一下浏览器存储,我们常见且常用的存储方式主要由两种:cookie.webStorage(localStorage和sessionStorage).下面我们来一一认识它们. Co ...