Est-il possible de référencer une propriété en utilisant QuerySet.values_list de Django?
J'ai une propriété personnalisée sur mon Django modèle qui renvoie le nom complet d'une Personne:
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
def _get_full_name(self):
return "%s %s" % (self.first_name, self.last_name)
full_name = property(_get_full_name)
Quand j'ai créer une requête, je voudrais faire référence à cette propriété. Par exemple:
people = Person.objects.all().values_list('full_name')
Malheureusement, Django rendements suivants FieldError:
FieldError: Impossible de résoudre le mot-clé "full_name' dans le champ
Longue histoire courte, est-il possible d'accéder à une propriété personnalisée via le values_list() la méthode? Si non, quelqu'un aurait-il des suggestions sur la meilleure façon de remédier à ce problème?
source d'informationauteur Huuuze
Vous devez vous connecter pour publier un commentaire.
nom complet n'est pas un champ dans le modèle django, il n'est pas possible.
vous pouvez utiliser interprétations de la liste
values_list
ne peut fonctionner que sur les champs récupérés directement à partir de la base de données. Comme zaca notes, vous aurez besoin d'une compréhension de liste sur le queryset:De ne pas sur-utiliser
values_list
. Il est conçu comme un moyen de limitation de la db de la requête, pour quand vous savoir vous aurez jamais besoin de ces domaines particuliers. Pour presque toutes les utilisations, l'obtention de la norme queryset est assez efficace.