我正在尝试动态获取模型的向后外键管理器。
如果我有:
class modelA(models.Model)
name = models.CharField(max_length=100)
class modelB(models.Model)
fk = models.ManyToManyField(modelA)
From the docs我可以看到我可以通过以下方式获得向后的外键管理员:
a = modelB.modela_set
shell中的给了我
django.db.models.fields.related_descriptors.create_forward_many_to_many_manager.<locals>.ManyRelatedManager
我能做什么
a.all()
并得到一个结果。
但是,如果我有字符串&#39; modela&#39;我这样做:
a = getattr(modelB, 'modela_set')
我会得到
django.db.models.fields.related_descriptors.ManyToManyDescriptor
如果我这样做:
a.all()
我收到属性错误。
我不明白为什么getattr()表现得这样。
有办法做到这一点吗?
答案 0 :(得分:1)
这是一个类vs实例问题。
getattr(modelB, 'modela_set')
不同于:
a = ModelB.objects.get(pk=1)
getattr(a, 'modela_set')