django_4数据库2——表外键

表关系:

  • many to one
  • many to many
  • one to one

many to one

记录是如何创建出来的?      先创建one,在在创建many,创建时加入ForeignKey

from django.db import models

# Create your models here.
class Enter(models):
    name = models.CharField(max_length=30)

    def __str__(self):
        return self.name

    __repr__ = __str__

class Blog(models):
    name = models.CharField(max_length=30)
    entry = models.ForeignKey(Enter)      #参数为one项的类名

    def __str__(self):
        return self.name

    __repr__ = __str__   

使用交互进行检索

In [1]: from blog.models import Entry, Blog

In [2]: entry1 = Entry.objects.create(name=‘alen‘)            #创建对应的one项(Entry)

In [3]: entry2 = Entry.objects.create(name=‘max‘)

In [4]: entry3 = Entry.objects.create(name=‘carl‘)

In [6]: blog1 = Blog.objects.create(name=‘alen_blog1‘, entry=entry1)  #创建对应many项

In [8]: blog1.entry          #(many)从many端进行检索到one
Out[8]: alen

In [9]: blog1.entry_id
Out[9]: 1

In [10]: entry1.blog_set        #(one)它所对应的blog(many)都有哪些
Out[10]: <django.db.models.fields.related_descriptors.create_reverse_many_to_one_manager.<locals>.RelatedManager at 0x7f438ce2db00>

In [11]: entry1.blog_set.all()
Out[11]: <QuerySet [alen_blog1]>

如何把这这种对应的结果关系如何在web界面实现?

时间: 2024-10-07 05:16:14

django_4数据库2——表外键的相关文章

sql查询指定表外键约束

//////////////////查询指定表外键约束select a.name as 约束名, object_name(b.parent_object_id) as 外键表, d.name as 外键列, object_name(b.referenced_object_id) as 主健表, c.name as 主键列 from sys.foreign_keys A inner join sys.foreign_key_columns B on A.object_id=b.constraint

Oracle系统表外键的更名

正在看的ORACLE教程是:Oracle系统表外键的更名. Oracle中表的外键是保证系统参照完整性的手段,而参照完整性是指分布在两个表中的列所满足的具有主从性质的约束关系.外键涉及到两个表,其中一个称之为父项表,另一个称之为子项表. 父项表(parent table)是参照约束的基础,即通过检查这张表的有效数据情况来判断约束是否成立,它是参照约束的条件,影响约束,而不受约束的任何影响. 子项表(child table)是参照约束的对象,当其发生变化,如有新数据输入时,通过比较父项表中的有效数

当数据库遇上外键

现在在一个数据库中,用以下命令建两张表(课程性质和grade表) 关系如下图所示:(grade中的课程性质是课程性质表的外键) 建表语句如下: DROP TABLE IF EXISTS `课程性质`; CREATE TABLE `课程性质` ( `id` int(11) NOT NULL, `课程性质` varchar(30) DEFAULT NULL, PRIMARY KEY (`id`), KEY `课程性质` (`课程性质`) ) ENGINE=InnoDB DEFAULT CHARSET

数据库中使用外键和不使用外键有什么区别

今天听了一个企业技术总监的宣讲,结果听说在他开发系统的过程中,都没有用到外键,这让我很惊讶,赶紧上网搜索了一些资料看了看,终于明白了不用外键的原因.这是一篇关于是否使用外键的讨论,讲的很有道理:对于主/外键/索引来说,在一些开发团队中被认为是处理数据库关系的利器,也被某些开发团队认为是处理某些具体业务的魔鬼,您的观点呢?在实际应用中您会采取哪种方式?大家共同观点:主键和索引是不可少的,不仅可以优化数据检索速度,开发人员还省不其它的工作,矛盾焦点:数据库设计是否需要外键.这里有两个问题:一个是如何

通过在Oracle子表外键上建立索引提高性能

根据我的经验,导致死锁的头号原因是外键未加索引(第二号原因是表上的位图索引遭到并发更新).在以下两种情况下,Oracle在修改父表后会对子表加一个全表锁: 1)如果更新了父表的主键(倘若遵循关系数据库的原则,即主键应当是不可变的,这种情况就很少见),由于外键上没有索引,所以子表会被锁住. 2) 如果删除了父表中的一行,整个子表也会被锁住(由于外键上没有索引). 除了全表锁外,在以下情况下,未加索引的外键也可能带来问题: 1) 如果有ON DELETE CASCADE,而且没有对子表加索引:例如,

SQL Server数据库学习笔记-外键

关于主键的话大家很好理解,主键的主要作用就是用来标识一条数据是唯一的,也就是保证数据的实体完整性.防止数据重复.但是外键的话就有许多的疑问了,那外键是咋回事儿呢? 1. 外键的定义: 外键(FK)是用于建立和加强两个表数据之间连接的一列或多列.通过将保存表中主键值的一列或多列中的值添加到另一个表中,可创建两个表之间的连接.这个列就成为第二个表的外键.它表示了两个表之间的关系. 2. 为什么要使用外键? 为了保证数据的参照完整性.补充:参照的完整性要求关系中不允许引用不存在的实体.与实体完整性是关

数据库 SQLserver 主外键 子查询

use lianxigo--创建部门表create table bumen ( bmcode int primary key,  --部门编号  bmname varchar(20),  --部门名字 bmceo varchar(20),  --部门主管 bmtel varchar(20),  --部门电话)go--创建人员表create table renyuan( code int primary key identity(1001,1),  --员工编号 name varchar (20)

sql 数据库查看主外键关联

SELECT 主键列ID=b.rkey ,主键列名=(SELECT name FROM syscolumns WHERE colid=b.rkey AND id=b.rkeyid) ,外键表ID=b.fkeyid ,外键表名称=object_name(b.fkeyid) ,外键列ID=b.fkey ,外键列名=(SELECT name FROM syscolumns WHERE colid=b.fkey AND id=b.fkeyid) ,级联更新=ObjectProperty(a.id,'Cn

Entity Framework code first设置不在数据库中生成外键

你现在用的EF是什么版本?我用EF6,你可以重写SqlServerMigrationSqlGenerator的生成外键和更新外键的方法,把不需要的表都过滤掉不就ok了? 1 public class ExtendedSqlGenerator : SqlServerMigrationSqlGenerator 2 { 3 #region 外键 4 protected override void Generate(DropForeignKeyOperation dropForeignKeyOperat