如何获取Model外键字段的manager对象?

时间:2011-04-05 16:03:39

标签: python django django-models

我正在尝试检索Django外键的Manager(或Model)。这应该是直截了当的,但我似乎无法找到合适的属性。

class ModelA(models.Model):
    pass

class ModelB(models.Model):
    thing = models.ForeignKey(ModelA)

假设我有变量modelBInstance和字符串“thing”,我想获得ModelA。我使用getattr跟踪(详尽地,我认为)每个对象的明显外观属性。我要么缺少某些东西,要么就是不可能。我不认为这是不可能的。

2 个答案:

答案 0 :(得分:2)

有关字段的所有相关信息都存储在模型的_meta类中。在那里,您将看到一个get_field_by_name方法,它将返回实际的外键字段。从那里,您可以通过rel.to获取它指向的模型。

thing = ModelB._meta.get_field_by_name('thing')[0]
print thing.rel.to

答案 1 :(得分:1)

一些事情: 1.模型实例没有管理员,模型实例。 2.要获得外键的管理员,您必须先引用其类,然后引用它。

type(getattr(modelBInstance,'thing'))。对象可以让你访问管理器。