How to access a model with its name in a string in django 1.9
我想通过字符串名称访问我在Django应用程序中定义的模型及其属性。我找到了这两个解决方案,但它们不适合我的问题。
如何访问与该属性名称对应的给定字符串的对象属性
python:从字符串名称调用函数
例如:模特儿
1 2 3 | Class Foo(models.Model): var1 = models.CharField(max_length=20) var2 = models.CharField(max_length=20) |
现在,我有了"foo.var2"字符串,我想访问它的var2字段中的foo模型和过滤器。
您可以在包含模型的模块上使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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") |