我试图动态地在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 )
Run Code Online (Sandbox Code Playgroud)
有没有办法让动态模型选择工作?
Dan*_*man 11
不要尝试通过QuerySet类本身构建查询集.你应该经常通过模特的经理.
您可以通过中get_model定义的函数获取模型django.db.models.它需要应用程序名称和模型名称的参数.
from django.db.models import get_model
model = get_model('myapp', 'modelA')
model.objects.filter(**kwargs)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1700 次 |
| 最近记录: |