1.一对多/多对一

class Entry(models.Model):
name=models.CharField(max_length=50)
def __str__(self):
return self.name class Blog(models.Model):
name=models.CharField(max_length=20)
entry=models.ForeignKey("Entry",on_delete=True) #多对一关键字
def __str__(self):
return self.name
>>> from fir.models import Entry,Blog
>>> entry1=Entry(name='entry1') #create entry one
>>> entry2=Entry(name='entry2')
>>> entry3=Entry(name='entry3')
>>> blog1=Blog(name='blog1',entry='entry1') #create blog, but failed
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "Z:\xxxxxx\models\base.py", line 477, in __init__
_setattr(self, field.name, rel_obj)
File "Z:\xxxxxx\related_descriptors.py", line 197, in __set__
self.field.remote_field.model._meta.object_name,
ValueError: Cannot assign "'entry1'": "Blog.entry" must be a "Entry" instance.
>>> e=Entry.objects.all()
>>> e
<QuerySet []>
>>> entry1.save() #forgot to save it, now to save it
>>> entry2.save()
>>> entry3.save()
>>> e=Entry.objects.all()
>>> e #save successfully
<QuerySet [<Entry: entry1>, <Entry: entry2>, <Entry: entry3>]>
>>> blog=Blog(name='blog1',entry='entry1')
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "Z:\xxxxxx\base.py", line 477, in __init__
_setattr(self, field.name, rel_obj)
File "Z:\xxxxxx\related_descriptors.py", line 197, in __set__
self.field.remote_field.model._meta.object_name,
ValueError: Cannot assign "'entry1'": "Blog.entry" must be a "Entry" instance. #must be a instance of Entry, not the entry's name
>>> blog=Blog(name='blog1',entry=entry1) #create successfully
>>> blog
<Blog: blog1>
>>> blog.entry
<Entry: entry1>
>>> blog.save() #don't forget to save it
从多里面查一。
>>> dir(blog)
[..., 'entry', 'entry_id', 'id', 'name', 'objects',... ]
#we can find both 'entry' and 'entry_id', then we can find the entry_id through blog
>>> a=blog.entry_id
>>> a
1
>>> b=blog.entry
>>> b
<Entry: entry1> #object
>>> 从一里面查多。 >>> dir(entry1)
[ 'blog_set', 'check', 'id', 'name', 'objects'...]
#we can find related blog sets through blog_set
>>> c=entry1.blog_set
>>> c
<django.db.models.fields.related_descriptors.create_reverse_many_to_one_manager.<locals>.RelatedManager object at 0x0000000003EDEF60>
>>> d=entry1.blog_set.all()

>>> entry1.blog_set.all()
   <QuerySet [<Blog: blog1>]>

  

  

2.manytomany

3.onetoone

django models 关系的更多相关文章

  1. Django models Form model_form 关系及区别

    Django models Form model_form

  2. django models 类型整理 version:1.8.3

    django models 类型整理 version:1.8.3 网上百度到的最上面的一篇已经是11年的了,django变化很大,现在把1.8.3版的models类型大致整理了下贴出来 普通键部分 F ...

  3. Django models Fild详解

    本文参考自:django官方文档models/field 在model中添加字段的格式一般为:  field_name = field_type(**field_options) 一  field o ...

  4. django models的点查询/跨表查询/双下划线查询

    django models 在日常的编程中,我们需要建立数据库模型 而往往会用到表与表之间的关系,这就比单表取数据要复杂一些 在多表之间发生关系的情形下,我们如何利用models提供的API的特性获得 ...

  5. day20 Django Models 操作,多表,多对多

    1 Django models 获取数据的三种方式: 实践: viwes def business(request): v1 = models.Business.objects.all() v2 = ...

  6. Django models多表操作

    title: Django models多表操作 tags: Django --- 多表操作 单独创建第三张表的情况 推荐使用的是使用values/value_list,selet_related的方 ...

  7. Django逻辑关系

    title: Django学习笔记 subtitle: 1. Django逻辑关系 date: 2018-12-14 10:17:28 --- Django逻辑关系 本文档主要基于Django2.2官 ...

  8. django models 数据库操作

    django models 数据库操作 创建模型 实例代码如下 from django.db import models class School(models.Model): pass class ...

  9. Django 表关系的创建

    Django 表关系的创建 我们知道,表关系分为一对多,多对多,一对一 我们以一个图书管理系统为背景,设计了下述四张表,让我们来找一找它们之间的关系 Book与Publish表 找关系:一对多 左表( ...

随机推荐

  1. 使用HTML CSS制作简易三角形和旗帜

    HTML:     <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  2. dubbo框架梳理

    Dubbo分层 Dubbo框架运行主要分如下九层: 配置层:config 服务代理层:proxy 注册中心层:registry 路由层:cluster 监控层:monitor 远程调用层:protoc ...

  3. MYSQL的操作命令

    一.御前 1 win+R  DOS 输入 net start mtsql 和 net stop mysql 启动和停止Mysql 服务,也可通过计算机——管理——服务和应用程序——服务——MYSQL— ...

  4. Mybatis在xml文件中处理大于、小于、不等于号的方法

    在mapper.xml使用大于.小于等符号会和xml语法冲突,解决冲突有两种方式. 方法一: 使用转义字符: 字符名称 字符符号 转义字符 大于号 > > 小于号 < < 与 ...

  5. Fillder的前后端的应用

    测试需求:有一个功能,允许用钻石兑换金币,假设1钻石=1金币,前端控制一次至少兑换10个,最多100个,后台不做验证. 测试方案:输入10,也就是告诉前端我要兑换10个金币,等前端验证通过之后,截取要 ...

  6. Python 文件操作(1)

    今天大佬给了个A文件给我,里面存放了机密数据. 什么机密数据??? 有帅哥的联系方式吗? 赶紧打开来看一下 1.open() 函数基本版 Python大佬有个内置开文件的函数open(), 专门开文件 ...

  7. 使用pyinstaller打包使用scrapy模块的程序运行时出现No such file or directory的问题解决

    解决的方案是利用pyinstaller的hook特性,步骤如下: 1.在项目目录新建hooks目录,目录中新建hooks-scrapy.py 文件,文件内容如下: from PyInstaller.u ...

  8. ZZNU-OJ-2098 : Drink coffee【线段树合并区间或者 差分 + 二分索引树】

    : Drink coffee 时间限制: Sec 内存限制: MiB 提交: 答案正确: 提交 状态 讨论区 题目描述 为了在上课时保持清醒,凯伦需要一些咖啡.咖啡爱好者凯伦想知道最佳的温度来冲煮完美 ...

  9. hbase实践之数据读取详解

    hbase基本存储组织结构与数据读取组织结构对比 Segment是Hbase2.0的概念,MemStore由一个可写的Segment,以及一个或多个不可写的Segments构成.故hbase 1.*版 ...

  10. linux命令集合(二)

    yum源的配置 yum  得配置yum源,配置阿里云的 两个 yum源  ,阿里云的yum源中,会有 mariadb的软件包   阿里云的yum仓库中,mariadb版本如下 mariadb      ...