Django orm 从外来对象获取其他外键对象

时间:2021-04-07 10:35:28

标签: django

我对这个可能很简单的问题感到困惑。

我的模型:

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 中的所有外键值?

1 个答案:

答案 0 :(得分:2)

既然您已经设置了 const mongoose = require("mongoose"); const eventSchema = new mongoose.Schema({ date: { type: Date, required: true, validate: { validator: function (v) { return ( v && // check that there is a date object v.getTime() > Date.now() + 24 * 60 * 60 * 1000 && v.getTime() < Date.now() + 90 * 24 * 60 * 60 * 1000 ); }, message: "An event must be at least 1 day from now and not more than 90 days.", } }}) ,您可以使用:

related_name='anomalies'