2011-10-12 4 views
0

Je veux souvent saisir un champ d'une table. Donc je fais ceci:Existe-t-il un moyen plus rapide de faire cela?

tmp = my_model.objects.get(pk=5) //Or some other record... 
myVar = tmp.myField 

Maintenant maintenant la valeur que je veux. Ce processus en deux étapes est ennuyeux. Y a-t-il un moyen en une seule étape de le faire?

Merci

+0

Y at-il une raison pour laquelle vous avez besoin d'obtenir la valeur dans une variable indépendante? En règle générale, vous utiliseriez simplement 'model_instance.field_name' dans votre code sans cette seconde étape. –

+0

Parce que 'model_instance.field_name' est beaucoup de type si j'ai besoin de cette valeur dans dix endroits différents dans un morceau de code. Il suffit de l'affectation 'y = model_instance.field_name' permet de taper plus facile :-) – Garfonzo

+0

je vais faire référence à un poste [sur ce site] [1] [1]: http://stackoverflow.com/questions/ 1372016/django-models-custom-functions – LPunker

Répondre

4
myVar = my_model.objects.get(pk=5).myField 
+0

J'aurais dû y penser. Merci :-) – Garfonzo

1

Puisque vous êtes seulement préoccupé par un champ, je vous recommande:

myVar = my_model.objects.values('myField').get(pk=5)['myField'] 

Pas besoin de placer une charge excessive sur votre DB.

+0

cela aurait pu marcher si c'était: _myVar = my_model.objects. ** filter ** (pk = 5) .values ​​('myField') ** [0] ** ['myField'] _ – seler

+0

Désolé. Oui, ma commande était éteinte. 'values' doit venir avant' get'. Une fois que vous appelez 'get' vous avez terminé. –

0
myVar = my_model.objects.filter(pk=5).values_list('myField', flat=True)[0] 

Personnellement, je vois ci-dessus comme la manière la plus élégante. Il va seulement myField de base de données et le passer à myVar

Questions connexes