【问题标题】:How to use variables for models in get_object_or_404 or objects.get如何在 get_object_or_404 或 objects.get 中为模型使用变量
【发布时间】:2013-04-12 19:39:21
【问题描述】:

在Django中,如何使用变量来动态使用get_object_or_404或objects.get之类的

get_object_or_404(${Variable}, pk=id)

${Variable}.objects.get(pk=id)

【问题讨论】:

  • Python 不是 PHP。究竟什么是“变量”?它来自哪里?
  • Variable 只是包含模型名称的字符串,如果Variable="ModelA",如何访问ModelA?
  • 其实我也想问和stackoverflow.com/questions/12279846/…一样的问题

标签: python django django-models django-views


【解决方案1】:

如果您确保在参数中传递 Django ORM 模型类,get_object_or_404() 将正常工作。

def do_something(id,MyDjangoModelObject = None)
    if MyDjangoModelObject:
        get_object_or_404(MyDjangoModelObject, pk=id)

还有

MyDjangoModelObject.objects.get(pk=id)

【讨论】:

    【解决方案2】:

    没问题,假设你有两个型号PostComment,你可以有这个:

    from app import models as app_models
    
    dynamic_object = getattr(app_models, 'post')
    

    所以你可以使用它:

    dynamic_object.objects.get(pk=id)
    

    get_object_or_404(dynamic_object, pk=id)
    

    【讨论】:

    • 如果我有 30 个模型怎么办?如果有任何方法可以通过名称或字符串获取对象?
    • @KelvinLi 好的,现在检查答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-02
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 2013-09-23
    相关资源
    最近更新 更多