Tho*_*rzl 1 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'
Run Code Online (Sandbox Code Playgroud)
现在 - 我在一个变量中输入了字段的名称 someones_name
>> field_name = 'someones_name'
Run Code Online (Sandbox Code Playgroud)
那么,如何使用该 field_name 变量对 Foo-Model 执行几乎相同的查询?如果真的有这种可能吗?
编辑
我不想用那个 field_name 进行查询。我想要 field_name 中给出的字段的确切值。我知道我可以做这样的事情
query = Foo.objects.get(pk=1)
query.someones_name
query.anothers_name
Run Code Online (Sandbox Code Playgroud)
我所需要的只是获取我从._meta.fields
(从另一个模型)动态接收的这个特定字段作为字符串。
在 RAW-SQL 中,类似于: 'SELECT %s FROM foo where pk = 1' % field_name
field_name = 'someones_name'
Foo.objects.get(**{field_name: 'Cpt. Hook'})
Run Code Online (Sandbox Code Playgroud)
它等于:
Foo.objects.get(someones_name='Cpt. Hook')
Run Code Online (Sandbox Code Playgroud)
更新:
field_name = 'someones_name'
obj = Foo.objects.get(pk=1)
getattr(obj, field_name)
Run Code Online (Sandbox Code Playgroud)
等于:
Foo.objects.get(pk=1).someones_name
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3209 次 |
最近记录: |