web-dev-qa-db-fra.com

Comment obtenir la valeur d'un objet Django

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?

9
HuLu ViCa

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)
12
awesoon

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
4
JPG

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)
0
root