gpt4 book ai didi

python - 使用模型名称字符串输入查询 Django 模型

转载 作者:太空狗 更新时间:2023-10-30 01:58:21 24 4
gpt4 key购买 nike

假设我有以下 Django 模型:

class ModelB(models.Model):
title = models.CharField(max_length=20)

class ModelD(models.Model):
name = models.CharField(max_length=20)

在 django ORM 中,我试图读取一个 string,它将是 model 的名称,并用它来查询。像这样:

>>b = 'ModelB'
>>b.objects.all()

这显然是行不通的,因为它是一个字符串。我看过ContentType但我不确定它对我的场景有何帮助。有什么建议吗?

我还尝试对 Contentype 执行 get 操作,如下所示:

>>> z = ContentType.objects.get(model='modelb')
>>> z
<ContentType: model b>
>>> z.__dict__
{'model': u'modelb', '_state': <django.db.models.base.ModelState object at 0x7f195346c150>, 'id': 14, 'app_label': u'testapp'}
>>>

但我不知道如何从这里继续下去!

最佳答案

如果您使用的是 Django < 1.7,我认为您可以做到这一点。

from django.db.models.loading import get_model

z = ContentType.objects.get(model='modelb')
ModelB = get_model(z.app_label, 'ModelB')

对于django >= 1.7,你可以

from django.apps import apps

z = ContentType.objects.get(model='modelb')
ModelB = apps.get_model(z.app_label, 'ModelB')

然后就可以使用ModelB进行查询了。

关于python - 使用模型名称字符串输入查询 Django 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29596475/

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