美文网首页
Django中N:M类型及自连接

Django中N:M类型及自连接

作者: 上帝大人 | 来源:发表于2019-04-21 16:10 被阅读0次

多对多关系

在models.py中添加新闻类,新闻类型类。新闻有多种类型,某种类型有多条新闻。

#新闻类型  类
class TypeInfo(models.Model):
    tname = models.CharField(max_length=20)
#新闻     类
class NewsInfo(models.Model):
    ntitle = models.CharField(max_length=20)
    ncontent =models.TextField()
    ndate = models.DateField(auto_now_add=True) #创建时设置为当前时间,可以被修改

    #通过ManyToManyField()建立TypeInfo和 NewsInfo 之间多对多的关系。
    newstype = models.ManyToManyField('TypeInfo')

这个类中属性多,所以在这个类中添加多对多的关系。
这个类似于外键的东西,最好命名时有两种类的影子。

之后生成迁移文件,然后执行迁移。


此时,在数据库中多了三个表,分别是新闻类的表app_typeinfo ,新闻表app_newsinfo,和关系表app_newsinfo_newstype,app_newsinfo_newstype的表结构为:id,newsinfo_id(关联app_newsinfo表)和typeinfo_id(关联app_typeinfo表)都是自动创建的


多对多的查询

可以把多到多的查询看作是一到多的查询:

如果查询非常的复杂,那么我们还可以是使用原生的sql语句进行查询:

语法格式为 list = 模型类.objects.raw(``` 原生的sql语句 ```,params=None,translations=None) ,

返回值是RawquerySet类型,然后for遍历lsit取值。

-----这个模型类NewsInfo或者TypeInfo都可以。

  • list = NewsInfo.objects.raw(select *...)

自连接

如何让自己连接自己,这是我们将上一级的id定义为外键: parentid = models.ForeignKey('self', null=True, blank=True)

  • self表示自己连接自己,null和blank必须为True。因为上一级可以为空。

相关文章

  • Django中N:M类型及自连接

    多对多关系 在models.py中添加新闻类,新闻类型类。新闻有多种类型,某种类型有多条新闻。 这个类中属性多,所...

  • LeetCode-python 787.K 站中转内最便宜的航班

    题目链接难度:中等 类型: Dijkstra 有 n 个城市通过 m 个航班连接。每个航班都从...

  • 实体识别

    1. 隐马尔可夫模型 输入(训练):词(观测,共m个)及对应的实体类型(状态,共n个), 构建: n*n 状态转移...

  • Admin

    Django Model 每一个Django Model都继承自django.db.models.Model 在M...

  • Django + uwsgi + nginx + bootstr

    Django Model 每一个Django Model都继承自django.db.models.Model 在M...

  • Django安装及简单使用1.1

    Django安装及简单使用 1.1 Django的简要概述 Django采用了MVC的软件设计模式,即模型M,视图...

  • 连通图问题

    简单描述:给出N个点,给出M中连接关系,根据连接关系(点点对)对N个点进行处理:如果两点之间没有直接或间接的连接关...

  • MySQL DECIMAL数据类型

    同事问MySQL数据类型DECIMAL(N,M)中N和M分别表示什么含义,M不用说,显然是小数点后的小数位数,但这...

  • django(自连接)----------12.29

    自连接的定义:即是主键表又是外键表 第一步:创建APP 第二步:将app的名字添加到settings.py里的DA...

  • MySql zerofill

    对于int(M)及tinyint(M)两者数值类型后面的M值理解: 需要强调的是,不同的数据类型中的M值意义是不一...

网友评论

      本文标题:Django中N:M类型及自连接

      本文链接:https://www.haomeiwen.com/subject/ilqjgqtx.html