Je me demandais s'il y avait un moyen d'utiliser filter() de Django sur les ensembles de requêtes en utilisant une propriété python générée dynamiquement en utilisant property()
. J'ai first_name
et last_name
de chaque utilisateur, et je veux filtrer en fonction de leur nom concaténé first_name last_name
. (La raison derrière cela est que quand je fais saisie semi-automatique, je recherche pour voir si la requête correspond le prénom, le nom, ou une partie de l'enchaînement. Je veux John S
correspondre John Smith
, par exemple.Requête django basée sur la propriété dynamique()
J'ai créé une propriété de name
:.
def _get_name(self):
return self.first_name + " " + self.last_name
name = property(_get_name)
de cette façon, je peux appeler user.name
pour obtenir le nom concaténés
Cependant, si j'essaie de faire User.objects.filter(name__istartswith=query)
je reçois l'erreur Cannot resolve keyword 'name' into field.
Des idées sur comment faire cela? Dois-je créer un autre champ dans la base de données pour stocker le nom complet?
Intéressant, non vous ne pouvez pas filtrer sur les propriétés, mais vous pouvez grouper les champs existants et filtrer par le groupe [répondre ci-dessous] (http://stackoverflow.com/a/19040011/3999748) – Persijn