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. 定位之z-index

    我们已经知道固定定位(fixed)和绝对定位(absolute)可以让盒子浮起来 相对定位(relactive)虽然不能让盒子浮起来,但也是可以让图层浮起来 那么既然大家都可以浮起来,就会存在一个问题 ...

  2. Mysql的管理

    Linux系统中:mysql进入的命令为mysql -u root -p +你的mysql密码. Mysql是如何添加用户呢? 在mysql命令行下,使用use mysql;进入mysql的数据库中. ...

  3. 1.使用Vue.js实现品牌案例添加功能

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. rsync备份案例

    客户端需求 1.客户端提前准备存放的备份的目录,目录规则如下:/backup/nfs_172.16.1.31_2018-09-02 2.客户端在本地打包备份(系统配置文件.应用配置等)拷贝至/back ...

  5. [Python] Codecombat 攻略 Sarven 沙漠 (1-43关)截止至36关

    首页:https://cn.codecombat.com/play语言:Python 第二界面:Sarven沙漠(43关)时间:4-11小时内容:算术运算,计数器,while循环,break(跳出循环 ...

  6. 算法笔记--BSGS && exBSGS 模板

    https://www.cnblogs.com/sdzwyq/p/9900650.html 模板: unordered_map<int, int> mp; LL q_pow(LL n, L ...

  7. Java基础 线程的通信的三个方法/ 交替数数线程 / 生产者&消费者线程问题

    线程通讯笔记: /** 线程通信 三个方法: * wait(): 调用该方法 是该调用的方法的线程释放共享资源的锁,进入等待状态,直至被唤醒 * notify() : 可以唤醒队列中的第一个等待同一共 ...

  8. linux实操_shell自定义函数

    基本语法: #定义函数 function 函数名(){ 函数体 } #调用函数 函数名 参数1 参数2... 实例:计算两个数的和. 运行后

  9. a标签中的javascript:void(0)和#的区别

    #包含了一个位置信息 默认的锚是#top 也就是网页的上端 而javascript:void(0)   仅仅表示一个死链接 void(0)用于执行某些处理,但是不整体刷新页面 javascript:v ...

  10. C# Stopwatch 使用

    static IEnumerable<int> SampleData() { ; var r = new Random(); , arraySize).Select(x => r.N ...