Django和python - 使用变量值作为模型的名称

时间:2014-06-01 12:47:03

标签: python django django-models

在名为 object_type 的变量中,我存储的值如下: Profile Company ,它们是应用程序中可用模型的名称。两个模型都有名为 uuid 的字段。

我需要这样的事情:

get_object_or_404(object_type, uuid=uuid_from_request)

如何传递object_type值(Profile或Company)来查询正确的模型?

2 个答案:

答案 0 :(得分:3)

如何使用将模型名称映射到模型类的字典:

object_types = {'Profile': Profile, 'Company': Compnay}

...

get_object_or_404(object_types[object_type], uuid=uuid_from_request)

或使用getattr

import app.models

get_object_or_404(getattr(app.model, object_type), uuid=uuid_from_request)

答案 1 :(得分:1)

在django中,所有模型类型都存储在魔法缓存中,因此您可以使用此缓存来获取模型类型,如:

 from django.db.models.loading import get_model
 Model = get_model("your_app_name", "Profile")
 get_object_or_404(object_type, uuid=uuid_from_request)