J'ai obtenu un objet de champ modèle en utilisant field_object = MyModel._meta.get_field(field_name)
. Comment puis-je obtenir la valeur (contenu) de l'objet de champ?
Utilisation 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)
Qui est identique à getattr
:
field_name = 'name'
obj = MyModel.objects.first()
field_object = MyModel._meta.get_field(field_name)
field_value = getattr(obj, field_object.attname)
Ou si vous connaissez le nom du champ et souhaitez simplement obtenir une valeur à l'aide de son nom, vous n'avez pas besoin de récupérer d'abord un objet de champ:
field_name = 'name'
obj = MyModel.objects.first()
field_value = getattr(obj, field_name)
En supposant que vous ayez un modèle en tant que,
class SampleModel(models.Model):
name = models.CharField(max_length=120)
Ensuite, vous obtiendrez la valeur de name
champ de l’instance de modèle par,
sample_instance = SampleModel.objects.get(id=1)
value_of_name = sample_instance.name
Si vous souhaitez y accéder quelque part en dehors du modèle, vous pouvez l'obtenir après avoir transformé un objet en modèle. Utiliser comme ça
EN DEHORS DU MODELE CLAA:
myModal = MyModel.objects.all()
print(myModel.field_object)
TILISANT LA CLASSE DE MODÈLE INTÉRIEUR
Si vous l'utilisez en classe, vous pouvez l'obtenir simplement comme ceci
print(self.field_object)