Puis-je obtenir la valeur d'un champ d'objet d'une autre manière que "obj.field". Est-ce que quelque chose comme "obj.get ('field')" existe? Même chose pour définir la valeur du champ.Objets django get/set field
Répondre
Pour obtenir la valeur d'un champ:
getattr(obj, 'field_name')
Pour définir la valeur d'un champ:
setattr(obj, 'field_name', 'field value')
Pour tous les champs et valeurs d'un objet Django:
[(field.name, getattr(obj,field.name)) for field in obj._meta.fields]
Vous pouvez lire la documentation de Model _meta API qui est vraiment utile.
pourquoi voulez-vous cela?
Vous pouvez utiliser
obj.__dict__['field']
... Je suppose que si ce n'est pas un appel de méthode
changed=[field for (field,value) in newObj.__dict__ if oldObj.__dict__[field] != value]
vous donnera une liste de tous les champs où changé.
(bien que je ne suis pas sûr à 100%)
après avoir envoyé un formulaire d'édition pour cet objet I ont: oldObj = ObjModel.objects.get (pk = pk) newobj = editForm.save (commettras = False) et je veux comparer les deux objets, je dois savoir quels champs ont été modifiés par le formulaire de modification . Existe-t-il un moyen plus simple de faire cela, sauf de comparer les objets par champ? – dandu
Ne fonctionne pas toujours (les clés étrangères cassent ceci). Utilisez @ João Marcus réponse à la place. –
Si quelqu'un trébuche sur cette petite question, la réponse est ici: How to introspect django model fields?
Pour obtenir des domaines connexes:
def getattr_related(obj, fields):
a = getattr(obj, fields.pop(0))
if not len(fields): return a
else: return getattr_related(a, fields)
par exemple,
getattr_related(a, "some__field".split("__"))
ne sais pas, peut-être il y a un meilleure façon de le faire, mais cela a fonctionné pour moi.
- 1. Enregistrement des objets ForeignKey dans Django
- 2. MySql Field Substrings
- 3. jQuery $ ("# field") est null?
- 4. Sélection des objets liés à django
- 5. PHP MySql Où Field = <4 mots
- 6. besoin d'aide - conversion de bit-field
- 7. Outil 'Encapsulate Field' pour un IDE PHP
- 8. Object stocker des objets dans Django entre les demandes
- 9. template django forloop.counter question
- 10. Vérification d'une balise vide dans POST -field par Javascript
- 11. Simulation de l'ordre de MySQL par FIELD() dans Postgresql
- 12. Récupérer tous les éléments d'une colonne SharePoint Field Choice
- 13. Django: Nom du modèle clash
- 14. Liste iCalendar "Field" (pour un schéma de base de données basé sur la norme iCalendar)
- 15. Comment utiliser des annotations XML telles que "XMLRoot" pour analyser le schéma comme <field key = "AA" id = "BB"> CC</field> en C#?
- 16. Django Contenttypes et décorateur
- 17. Magasin django forms.MultipleChoiceField dans les modèles directement
- 18. Django/Python - Regrouper des objets par ensemble commun d'une relation plusieurs-à-plusieurs
- 19. Filtrage sur des objets liés lors de l'utilisation d'annotations dans Django
- 20. Comment puis-je écrire une méthode dans un modèle Django pour récupérer des objets liés?
- 21. Comment mémoriser des calculs coûteux sur des objets de modèle Django?
- 22. Déplacer des objets d'une association many-to-many vers une autre dans django?
- 23. Django ORM: la mise en cache et de manipuler des objets ForeignKey
- 24. Comment puis-je limiter les choix clés étrangères à des objets connexes que dans django
- 25. Comment créer un objet formulaire à partir de 2 objets modèles différents dans Django?
- 26. Suppression plus intelligente des objets avec une relation many-to-many dans l'interface d'administration de Django
- 27. django: form.fields pas itérer exemple des champs
- 28. IoC: Comment créer des objets dynamiquement
- 29. Django LEFT JOIN?
- 30. Django + GWT ou Jquery
duplication possible de [Comment introspecter des champs de modèle django?] (Http://stackoverflow.com/questions/2384436/how-to-introspect-django-model-fields) –