8
votes

Django: Accès aux attributs de modèle

excuses pour la question noobish, je suis complètement nouveau à Python et à Django et à essayer de faire ma première application.

J'ai une classe simple p> xxx pré>

à laquelle j'ai ajouté un seul enregistrement. Je peux accéder à cela avec p> xxx pré>

Cependant, si j'essaie d'utiliser la syntaxe DOT pour accéder à ses attributs, j'obtiens l'erreur suivante P>

def __unicode__(self):
    return self.title


0 commentaires

4 Réponses :


2
votes

Filtre renvoie un querySet et non l'objet unique que vous recherchez. Utilisez-vous à la place du filtre.

méthodes qui renvoient de nouveaux querySets


0 commentaires

1
votes

comme La documentation explique, Filtre code> Toujours em> retourne un requérant, qui est une collection d'éléments similaire à la liste, même si un seul élément correspond à la condition de filtrage. Donc, vous pouvez trancher la liste pour accéder à votre élément - environ [0] code> - ou, mieux, utiliser get () code> à la place:

about = About.objects.get(id=1)
print about.title


0 commentaires

14
votes

Dans votre cas, sur est un QuoiySet Objet , pas une instance de votre modèle. Essayez xxx

alternativement, utilisez obtenez () pour récupérer une seule instance du modèle : xxx


2 commentaires

Je pose également une question naïve. Pourquoi l'avons-nous comme Model.ObjectS.get () ou Model.ObjectS.all () comme ça et pas directement modèle.get () ou Model.All () Que réalisons-nous avec des objets?


@user - 'Objets' est le nom de ce que nous appelons un "gestionnaire" et c'est le mécanisme par lequel vous interface avec les modèles Django. «Objets» est le nom par défaut, mais vous pouvez le remplacer comme vous le souhaitez, ou écrivez également vos propres responsables, si vous le souhaitez. Beaucoup d'informations dans les docs sur les gestionnaires, jetez un coup d'oeil :)



1
votes

Si vous voulez obtenir une seule ligne xxx

maintenant à propos de est un objet (une ligne)

Filtre Liste des retours, afin d'accéder aux éléments de la liste, vous devez utiliser index (environ [0]) ou pour boucle .mbut Obtenez Retour exactement une rangée.


0 commentaires