获取 OneToOne 的模型

Get the Model of a OneToOne

我需要获取 OneToOne 相关模型的模型:

class ModelA(models.Model):
    name = models.CharField(...)

class ModelB(models.Model):
    target = models.OneToOneField(
        ModelA, 
        related_name="model_a", 
    ...) 

当我使用 ModelB 实例获取其目标字段的 class 时:

 modelb_instance.model_a._meta.model 

我收到一个错误:

ForwardOneToOneDescriptor' object has no attribute '_meta' 

我知道这不能在 OneToOne 属性上完成,但我不确定如何检索 ModelA 模型名称。 任何帮助将不胜感激

正如@Willem 建议的那样,通过 ModelB 的选项完成工作: modelb_instance._meta.get_field('target').related_model

您可以使用:

ModelB.target.field<b>.related_model</b>

modelb_instance:

type(modelb_instance).target.field<b>.related_model</b>

或者我们可以通过 ModelBOptions 使用:

modelb_instance._meta.<b>get_field('target').related_model</b>