Code前端首页关于Code前端联系我们

Django-ORM的自相关表结构+并行数据处理

terry 2年前 (2023-09-24) 阅读数 53 #后端开发

什么是自相关表结构

表内自相关是指表中数据相关的对象与表是相同的字段,所以我们可以直接使用in-table。该映射将外键映射设置为其自己的表中的字段。同样,表内关系也分为一对多字段和多对多字段。

例如:

微博评论,每条评论可以有子评论,但每条评论的字段内容必须相同,且每条评论只有一条父评论,这就足够了。一对多的情况。父评论是相关字段,可以对应多个子评论。这是一对多的自关联。

再比如,我国存储省市县信息就是一个非常典型的自相关表。一个省对应多个城市。 ? content=models.CharField(max_length=255)
#评论的发布时间
push_time=models.DateTimeField(auto_now_add=True)
#关联评论的父id
pcomment = models . foreignKey . (to='self',null=True)
def __str__(self):
return self.content

#省市县model.Model):
name = models.CharField (max_length =20,verbose_name="name")
Parent = models.ForeignKey("self",verbose_name="顶级行政区划")

class Meta:
db_table = "db "
verbose_name = "行政部门"

如何在Django中查询

#第一条数据的id为1,如果等于1可以通过过滤父评论来过滤关联字段

Comment.objects.filter (pcomment_id=1)

#根据子评论映射id在父评论内容中向前搜索

Comment.objects.filter(pcomment_id=2).values('pcomment__content')

#根据父评论的id反向搜索子评论

Comment.objects.filter(id=1).values ( 'comment__id')

"============================================== =====================================连接到城市 a ,你想检查它属于哪个省份

a = Area.objects.get(id=1)

#b 是城市 a

b = a 的身份对象。 Parent

#如果你知道一个省,就叫它a省,查看它有哪个城市

#b是a省所有城市的目标

b = a.area_set.all() #小写的类名+“set”

在Django中将并行数据处理成树状,方便使用

#datas是从数据库收到的序列化数据

def xTree( datas):
列表 = []
树 = {}
parent_id = ''
for i in datas:
item = i'it' ']] = item
root = None
for i in datas:
obj = i
if not obj['cid']:
root ='[obj[' ] links.append( root)
else:
parent_id = obj['cid']
如果'children'不在树[parent_id]中:'][children_id]] = []
树[ parent_id]['children'].append(tree[obj['id']])
返回列表

版权声明:本文由CSDN博主“Rliner”原创文章撰写。
原文链接:https://blog.csdn.net/weixin_47073925/article/details/106504767

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门