Django中无法通过_meta类访问模型字段的on_delete参数
解决Django OneToOneField无法访问on_delete属性的问题
问题分析
你定义的OrgLocation模型中,org字段是OneToOneField,通过_meta.get_field("org")获取字段对象后直接访问.on_delete会触发AttributeError,但primary_key、blank等属性可正常访问。这是因为关系型字段(如OneToOneField、ForeignKey)的关联配置属性(包括on_delete)并不直接存储在字段对象本身,而是存储在其关联的remote_field对象中。
解决方案
修改代码,通过字段的remote_field属性访问on_delete:
OrgLocation._meta.get_field("org").remote_field.on_delete
补充说明
- 若使用Django 1.x版本,需用
.rel替代.remote_field:OrgLocation._meta.get_field("org").rel.on_delete primary_key、blank属于字段本身的通用属性,因此可直接从字段对象访问;而on_delete是关联关系的配置项,需从关联对象中获取。
内容的提问来源于stack exchange,提问作者kureal
相关产品推荐
相关产品推荐

