Django对查询进行建模



我有三个表person(id、电子邮件、密码、类型(、user_location(id、location、u_id(和reviews(id、review、from_id、to_id(。user_location(u_id(是person(id(的外键。评论(from_id,to_id(对个人(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)

第一个查询选择具有typealocationb的所有用户。第二个查询对这些结果进行筛选。这一切都是未经测试的,所以你可能需要调整一下。底线:遵循关系。附带说明一下,您可能想了解Django模型命名约定。

最新更新