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

2 投票
2 回答
1526 浏览
提问于 2025-04-18 08:11

在一个叫做 object_type 的变量里,我存储了一些值,比如 Profile(个人资料)或 Company(公司),这些都是应用程序中可用的模型名称。这两个模型都有一个叫做 uuid 的字段。

我需要做的事情类似于这个:

get_object_or_404(object_type, uuid=uuid_from_request)

我该如何把 object_type 的值(个人资料或公司)传递过去,以便查询到正确的模型呢?

2 个回答

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)
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)

撰写回答