web-dev-qa-db-ja.com

Django Model Fieldオブジェクトの値を取得する方法

field_object = MyModel._meta.get_field(field_name)を使用してモデルフィールドオブジェクトを取得しました。フィールドオブジェクトの値(コンテンツ)を取得するにはどうすればよいですか?

9
HuLu ViCa

value_from_object を使用します。

field_name = 'name'
obj = MyModel.objects.first()
field_object = MyModel._meta.get_field(field_name)
field_value = field_object.value_from_object(obj)

getattrと同じです:

field_name = 'name'
obj = MyModel.objects.first()
field_object = MyModel._meta.get_field(field_name)
field_value = getattr(obj, field_object.attname)

または、フィールド名がわかっていて、フィールド名を使用して値を取得するだけの場合、最初にフィールドオブジェクトを取得する必要はありません。

field_name = 'name'
obj = MyModel.objects.first()
field_value = getattr(obj, field_name)
12
awesoon

次のようなモデルがあると仮定すると、

class SampleModel(models.Model):
    name = models.CharField(max_length=120)

次に、モデルインスタンスのnameフィールドの値を取得します。

sample_instance = SampleModel.objects.get(id=1)
value_of_name = sample_instance.name
4
JPG

モデルの外部のどこかにアクセスしたい場合は、オブジェクトをモデルにした後に取得できます。このように使用する

モデルCLAAを消す

myModal = MyModel.objects.all()

print(myModel.field_object)

モデルクラス内での使用
クラス内で使用している場合、次のように簡単に取得できます

print(self.field_object)
0
root