我正在尝试检索Django外键的Manager(或Model)。这应该是直截了当的,但我似乎无法找到合适的属性。
class ModelA(models.Model):
pass
class ModelB(models.Model):
thing = models.ForeignKey(ModelA)
假设我有变量modelBInstance和字符串“thing”,我想获得ModelA。我使用getattr
跟踪(详尽地,我认为)每个对象的明显外观属性。我要么缺少某些东西,要么就是不可能。我不认为这是不可能的。
答案 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'))。对象可以让你访问管理器。