查询字段为字符串?

时间:2012-10-22 18:51:57

标签: django django-models django-queryset

我想查询一个模型,查看我作为字符串获得的特定字段。

演示:

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

1 个答案:

答案 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