field_object = MyModel._meta.get_field(field_name)
を使用してモデルフィールドオブジェクトを取得しました。フィールドオブジェクトの値(コンテンツ)を取得するにはどうすればよいですか?
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)
次のようなモデルがあると仮定すると、
class SampleModel(models.Model):
name = models.CharField(max_length=120)
次に、モデルインスタンスのname
フィールドの値を取得します。
sample_instance = SampleModel.objects.get(id=1)
value_of_name = sample_instance.name
モデルの外部のどこかにアクセスしたい場合は、オブジェクトをモデルにした後に取得できます。このように使用する
モデルCLAAを消す:
myModal = MyModel.objects.all()
print(myModel.field_object)
モデルクラス内での使用
クラス内で使用している場合、次のように簡単に取得できます
print(self.field_object)