Django查询关系行为



好的,有没有一种方法可以过滤对象,从而只获得具有关联记录的记录。这可能是一个正确的加入吗?

基本上,当在B上使用WHERE子句时,我只想从A中选择B有外键的记录。我是不是让它听起来比实际情况更复杂?我不需要B的记录,只需要A;也许是子查询?

我对Django的查询还比较陌生,只做了一些简单的事情。

你的问题有点模糊,但如果我理解正确,它会像这样工作:

class A(models.Model):
    pass
class B(models.Model):
    a = models.ForeignKey(A)
    some_field = models.IntegerField()
a.filter(b__some_field=5).distinct()

JOINsbsome_field上的两个表和过滤器。然后distinct()确保只返回唯一的a。请参阅有关跨越关系的查找的文档。

我的解决方案比我最初想象的要简单得多。我不知道你能这么容易地过滤相关的模型。以下是我最终得到的:

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)

相关内容

  • 没有找到相关文章

最新更新