Django查找表查询

Django查找表查询,django,django-models,Django,Django Models,我是Django新手,很难理解这个问题 型号: class JakAlgAlgorithms(models.Model): alg_id = models.AutoField(primary_key=True) alg_name = models.CharField(max_length=100, blank=True) alg_description = models.CharField(max_length=1000, blank=True) def __un

我是Django新手,很难理解这个问题

型号:

class JakAlgAlgorithms(models.Model):
    alg_id = models.AutoField(primary_key=True)
    alg_name = models.CharField(max_length=100, blank=True)
    alg_description = models.CharField(max_length=1000, blank=True)
    def __unicode__(self):
        return self.alg_name
    class Meta:
        db_table = u'jak_alg_algorithms'

class JakAlgXref(models.Model):
    xref_alg = models.ForeignKey(JakAlgAlgorithms, related_name='jakalgxref_alg' ,null=True, blank=True)
    xref_parent = models.ForeignKey(JakAlgAlgorithms, related_name='jakalgxref_parent', null=True, blank=True)
    class Meta:
        db_table = u'jak_alg_xref'
我要做的是返回一个算法的所有父代或子代。这就是我设法到达的地方

    parents = JakAlgAlgorithms.objects.filter(jakalgxref_parent= algorithm.jakalgxref_alg.all())

然而,我已经意识到这对多个父母来说是行不通的。如何使筛选器将jakalgxref_parent设置为等于algorithim.jakalgxref_alg.all()返回的每个值?似乎我遗漏了一些简单的东西://p>将我以前的评论作为对未来用户的回答。

您要找的是:

parents = JakAlgAlgorithms.objects.filter(jakalgxref_parent__in= algorithm.jakalgxref_alg.all())

请注意,我只将
\u in
子句添加到了您的筛选器中。

我不确定是否完全理解您正在尝试的内容。这只是一个黑暗中的镜头,
parents=jakalgolgorithms.objects.filter(jakalgxref\u parent\u in=algorithm.jakalgxref\u alg.all())
?请注意,我只是在您的过滤器中添加了_in子句……您应该将答案作为实际答案,并将其标记为已回答,以便在搜索过程中为其他用户带来好处。您可能不应该用这种类型的东西重新发明轮子。有像djangomptt()这样的库使得树关系变得微不足道。