我想查询一个模型,查看我作为字符串获得的特定字段。
演示:
class Foo(models.Model):
someones_name = models.CharField(max_length=100)
anothers_name = models.CharField(max_length=100)
# python shell:
>> Foo.objects.get(pk=1).someones_name
u'Cpt. Hook'
>> Foo.objects.get(pk=1).anothers_name
u'Peter Pan'
现在 - 我在变量中输入了字段someones_name
>> field_name = 'someones_name'
那么,如何使用该field_name-variable对Foo-Model执行几乎相同的查询?如果确实有这样的事情可能吗?
修改
我不打算使用该field_name进行查询。我想要field_name中给出的字段的确切值。我知道我可以做这样的事情
query = Foo.objects.get(pk=1)
query.someones_name
query.anothers_name
我只需要将._meta.fields
(来自其他模型)动态接收的这个特定字段作为字符串。
在RAW-SQL中,例如:'SELECT %s FROM foo where pk = 1' % field_name
答案 0 :(得分:4)
field_name = 'someones_name'
Foo.objects.get(**{field_name: 'Cpt. Hook'})
等于:
Foo.objects.get(someones_name='Cpt. Hook')
<强>更新强>
field_name = 'someones_name'
obj = Foo.objects.get(pk=1)
getattr(obj, field_name)
等于:
Foo.objects.get(pk=1).someones_name