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. nRF24L01无线介绍

    CE:RX或TX模式选择 CSN:SPI片选信号 SCK:SPI时钟 MOSI:SPI数据输入 MISO:SPI数据输出 IRQ:可屏蔽中断脚 51测试程序 实测可用! #define TX_ADR_ ...

  2. ulimit用法

    ulimit -a:显示当前所有的资源限制 -c:core文件大小 -f:设置创建文件的最大值 -n:设置内核可以同时打开的文件描述符的最大值 -p:设置管道缓冲区的最大值 -s:设置堆栈的最大值 - ...

  3. 通用mapper接口已经写好的 根据 list 集合查询 相应数据

    package tk.mybatis.mapper.additional.idlist; import org.apache.ibatis.annotations.Param; import org. ...

  4. 远程连接服务器数据库报错:Host ‘XXXXXX’ is blocked because of many connection errors

    原文:https://blog.csdn.net/li_li_lin/article/details/72764683 一.我遇到的问题描述 使用Navicat for mysql连接公司的服务器数据 ...

  5. 系统---《windows + ubuntu双系统》

    安装 Windows + Ubuntu双系统 不是第一次安装 Windows + Ubuntu双系统了,每一遇见的问题都不一样,收获也不一样. 制作U盘的部分截图: 电脑的基本配置截图:

  6. 【Leetcode】【简单】【1. 两数之和】【JavaScript】

    题目描述 1. 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能 ...

  7. bloomberg bulkFile解析

    文章导航 bloomberg bulkfile解析 bloomberg bulkfile 在oracle的存储 准备工作: Bloomberg 提供了以下文件 1 . fields.csv 下载地址: ...

  8. ComboGrid二级联动以及给二级联动赋默认值

    <input name="buyStatus" id="upbuyStatus" style="width: 100%;height: 85%& ...

  9. Spring Boot 之FilterRegistrationBean --支持web Filter 排序的使用(转)

    Spring Boot 之FilterRegistrationBean  --支持web Filter 排序的使用Spring 提供了FilterRegistrationBean类,此类提供setOr ...

  10. 谷歌浏览器不兼容的一些Js

    这篇博文主要记录本人在实际应用中碰到的谷歌浏览器与一些Js不兼容的问题,随着时间的推移,这篇博文的内容可能越来越多,也可能一点也没有(我想那时候谷歌肯定是相当牛逼的). 1.谷歌浏览器不兼容docum ...