好的是有一种过滤对象的方法,这样你才能获得带有相关记录的记录。这是一个正确的加入吗?
基本上,我只想从B中选择一个B的记录,而B在B上使用WHERE子句。我觉得它听起来比它复杂吗?我不需要B的记录,只需A;也许是一个子查询?
我对Django的查询相对较新,我只是做了一些更简单的事情。
答案 0 :(得分:1)
你的问题有点模糊,但如果我理解正确的话就会这样:
class A(models.Model):
pass
class B(models.Model):
a = models.ForeignKey(A)
some_field = models.IntegerField()
a.filter(b__some_field=5).distinct()
这JOINs
b
some_field
上的两个表格和过滤条件distinct()
。然后a
确保只返回唯一的{{1}}。请参阅lookups that span relationships上的文档。
答案 1 :(得分:0)
我的解决方案比我最初的想法简单得多。我不知道你可以轻松地过滤相关模型。这就是我最终得到的结果:
class A(models.Model):
pass
class B(models.Model):
a = models.ForeignKey(A)
location = models.ForeignKey(Location)
a.filter(b__location=request.user.profile.location)