gpt4 book ai didi

python - 如何在 Django 1.9 的字符串中访问模型名称

转载 作者:太空宇宙 更新时间:2023-11-03 15:00:49 25 4
gpt4 key购买 nike

我想通过字符串名称访问我在 Django 应用程序中定义的模型及其属性。我找到了这两个解决方案,但它们不适合我的问题。

How to access object attribute given string corresponding to name of that attribute

Python: call a function from string name

例如:模型.py

Class Foo(models.Model):
var1 = models.CharField(max_length=20)
var2 = models.CharField(max_length=20)

现在,我有“Foo.var2”字符串,我想访问 Foo 模型并在其 var2 字段中进行过滤。

最佳答案

您可以在包含模型的模块上使用getattr,然后在模型上应用相同的方法以获取模型中的字段:

from app_name import models

s = "Foo.var2"
attrs = s.split('.')

my_model = my_field = None
# get attribute from module
if hasattr(models, attrs[0]):
my_model = getattr(models, attrs[0])

# get attribute from model
if hasattr(my_model, attrs[1]):
my_field = getattr(my_model, attrs[1])

# and then your query
if my_model and my_field:
q = my_model.objects.filter(my_field="some string literal for filtering")

关于python - 如何在 Django 1.9 的字符串中访问模型名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38077297/

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