1

我想查询模型以获取我作为字符串获得的特定字段。

演示:

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

4

1 回答 1

5
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
于 2012-10-22T18:57:26.827 回答