Django 1.10中如何获取一对多关联字段的关联模型类型
解决Django 1.10中通过反向关联获取对应模型的问题
你碰到的这个情况其实是因为一对一和一对多的反向关联对象结构不一样导致的:在一对一场景下,反向关联是OneToOneRel类型,它有rel.to属性可以拿到目标模型;但一对多的反向关联是ManyToOneRel类型,它本身就直接通过model属性暴露了对应的模型,不需要再套一层rel。
直接可用的解决方案
针对你代码里的another_class_things这个反向关联,直接访问它的model属性就能拿到another_class模型:
the_class = some_class._meta.get_field('another_class_things').model
兼容多场景的写法(可选)
如果你的代码需要同时处理一对一和一对多的反向关联,可以加个类型判断来兼容:
from django.db.models.fields.related import OneToOneRel, ManyToOneRel related_field = some_class._meta.get_field('another_class_things') if isinstance(related_field, OneToOneRel): the_class = related_field.rel.to elif isinstance(related_field, ManyToOneRel): the_class = related_field.model
内容的提问来源于stack exchange,提问作者Mick
相关产品推荐
相关产品推荐

