【问题标题】:Django and python - use variable value as model's nameDjango 和 python - 使用变量值作为模型的名称
【发布时间】:2014-06-01 12:47:03
【问题描述】:

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

我需要这样的东西:

get_object_or_404(object_type, uuid=uuid_from_request)

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

【问题讨论】:

    标签: python django django-models


    【解决方案1】:

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

    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)
    

    【讨论】:

    • 关于第一个选项:类型存储在另一个对象属性中。我不确定如何在我的情况下使用。
    • @dease,还有什么对象?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 1970-01-01
      • 2016-04-14
      相关资源
      最近更新 更多