Django模型查询

我有3张表person(id,email,password,type), user_location(id,location,u_id)和review(id,review,from_id,to_id)。user_location(u_id)是person(id)的外键。评论(from_id,to_id)也是person(id)的外键。那么我如何过滤出一个类型为’a’和位置为’b’的人以及他得到的带有评论者名字的评论?

模型.py

class Person(models.Model):
    email = models.CharField(max_length=30)
    pwd = models.CharField(max_length=30)
    type = models.CharField(max_length=30)

class User_locations(models.Model):
    location = models.CharField(max_length=30)
    u_id = models.ForeignKey('Person', on_delete=models.CASCADE)

解决方案:

不知道我是否真的明白你想做什么,但这应该能给你指明正确的方向。不要忘了参考文档中的以下内容 多对一关系跨越关系的查询. 那里说。

要引用 “反向 “关系,使用模型的小写名称。

然后使用正常的 __ 来访问属性。

a_and_b = Person.objects.filter(type='a', user_locations__location='b')
reviewers = Person.objects.filter(to_id__in=a_and_b)

第一个查询选择所有具有 type alocation b. 第二个查询是对这些结果进行过滤。这都是未经测试的,所以你可能需要调整一下。底线:遵循关系。顺便说一下,你可能需要阅读一下Django模型的命名惯例。

给TA打赏
共{{data.count}}人
人已打赏
未分类

十六进制表文件

2022-9-8 7:31:19

未分类

对表进行排序 Vue.js

2022-9-8 7:31:21

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索