文字列として取得した特定のフィールドについてモデルにクエリを実行したいと思います。
デモ:
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
必要なのは、 (別のモデルから)動的に受け取るこの1つの特定のフィールドを文字列として取得することだけです。
RAW-SQLでは、次のようになります。'SELECT %s FROM foo where pk = 1' % field_name