gpt4 book ai didi

django - 是否可以将 QuerySet 模型动态指定为字符串?

转载 作者:行者123 更新时间:2023-12-03 22:56:29 24 4
gpt4 key购买 nike

我正在尝试在 Django 中动态构建查询。我有很多模型想要为其构建查询,但我不想对模型的名称进行编码,我想将其作为字符串传递。

from django.db.models.query import QuerySet
a_works = QuerySet(model_A)
a_doesnt_work = QuerySet("model_A") # I want this to work, too

a_works.filter(pk=23) # no error
a_doesnt_work.filter(pk=23) # error: AttributeError: 'str' object has no attribute '_meta'

# then I am dynamically filtering different fields, which works fine with a_works
kwargs = { "%s__%s" % (field, oper) : val }
results = a_works.filter( **kwargs )

有没有办法让动态模型选择工作?

最佳答案

不要尝试通过 QuerySet 类本身构建查询集。您应该始终通过模型的管理器。

您可以通过 get_model 获取模型在 django.db.models 中定义的函数.它接受应用程序名称和模型名称的参数。

from django.db.models import get_model
model = get_model('myapp', 'modelA')
model.objects.filter(**kwargs)

关于django - 是否可以将 QuerySet 模型动态指定为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5571166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com