检索 Django 中的所有反向外键
Retrieve all reverse foreign keys in Django
给定一个指向 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() File
"C:\aa\aa\env\lib\site-packages\django\db\models\fields\related_descriptors.py",
line 505, in __call__manager = getattr(self.model,
kwargs.pop('manager'))
KeyError: u'manager'
您正在尝试将相关密钥用作可调用项,它 returns 是模型管理器,因此您可以在 all
上使用
qs = placerating.theplace.upperlevelplaces.all()
给定一个指向 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() File "C:\aa\aa\env\lib\site-packages\django\db\models\fields\related_descriptors.py", line 505, in __call__manager = getattr(self.model, kwargs.pop('manager')) KeyError: u'manager'
您正在尝试将相关密钥用作可调用项,它 returns 是模型管理器,因此您可以在 all
上使用
qs = placerating.theplace.upperlevelplaces.all()