django - Django orm 从外来对象获取其他外键对象
问题描述
我对这个可能很简单的问题感到困惑。
我的模型:
class DiseaseLibrary(models.Model):
name = models.CharField(max_length=255)
subadults = models.BooleanField(default=False,blank=True)
adults = models.BooleanField(default=False, blank=True)
def __str__(self):
return self.name
class BoneChangeBoneProxy(models.Model):
anomalies = models.ForeignKey('DiseaseLibrary', on_delete=models.CASCADE, related_name='anomalies')
technic = models.ForeignKey('Technic', on_delete=models.CASCADE, related_name='technic_proxy')
bone_change = models.ForeignKey('BoneChange', blank=True, null=True, on_delete=models.CASCADE, related_name='bone_change_proxy')
bone = TreeManyToManyField('Bone', related_name='bone_proxy')
从DiseaseLibrary,我想通过related_name“异常”获取所有链接到它的对象。即“technic_proxy”、“bone_change_proxy”、“bone_proxy”,它们是其他模型的外键。
我希望通过相关名称“异常”和_set访问
>>> ds = DiseaseLibrary.objects.all().first()
>>> ds.name
'Some nice name'
>>> ds.anomalies
<django.db.models.fields.related_descriptors.create_reverse_many_to_one_manager.<locals>.RelatedManager object at 0x107fa4f10>
>>> ds.anomalies_set.all()
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'DiseaseLibrary' object has no attribute 'anomalies_set'
>>>
如何通过模型 DiseaseLibrary 访问模型 BoneChangeBoneProxy 中的所有 ForeignKey 值?
解决方案
由于您已设置related_name='anomalies'
,因此您可以使用以下命令进行查询:
# ↓ related_name of the ForeignKey
ds.anomalies.all()