检索Django中的所有反向外键

时间:2017-01-11 09:36:22

标签: python django foreign-keys recursive-query

给定一个指向ThePlace对象的特定Placerating对象,如何检索指向此ThePlace对象的所有ThePlace对象。

请注意,ThePlace与自身有递归关系。

型号:

class ThePlace(models.Model):
    author = models.ForeignKey('auth.User')
    upperlevelplace = models.ForeignKey('self', on_delete=models.SET_NULL, null=True, related_name='upperlevelplaces')

class Placerating(models.Model):
    theplace = models.ForeignKey('ThePlace', on_delete=models.CASCADE, null=True, related_name='placeratings')

我试过这个观点:

placerating = Placerating.objects.get(pk=15)

qs = placerating.theplace.upperlevelplaces()
print(qs)

但是我收到以下错误:

  

qs = placerating.theplace.upperlevelplaces()文件   “C:\ AA \ AA \ ENV \ LIB \站点包\ Django的\ DB \型号\域\ related_descriptors.py”   第505行,在__call__manager = getattr(self.model,   kwargs.pop(管理员))       KeyError:u'manager'

1 个答案:

答案 0 :(得分:2)

您尝试将相关密钥用作可调用对象,它会返回一个模型管理器,以便您可以使用all

qs = placerating.theplace.upperlevelplaces.all()