Django查找表查询
我是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
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()这样的库使得树关系变得微不足道。