J'ai un modèle Django appelé Author
, avec un champ appelé name
, qui est divisé en pas Nom/Prénom:Django: recherche sur les premières lettres de mots individuels dans la phrase?
class Author(models.Model):
name = models.CharField(max_length=200, unique=True)
Par exemple, j'ai une entrée avec le nom de l'auteur Donald Knuth ' .
Maintenant, j'aimerais interroger par son nom, en utilisant istartswith au début de chaque mot dans le champ name
.
Donc, je voudrais être en mesure d'interroger avec 'Kn
', et obtenir 'Donald Knuth
' de retour.
Quelque chose comme:
authors = Author.objects.filter(name__word__istartswith="Kn")
Est-ce possible dans Django?
Merci! C'est exactement ce dont j'ai besoin, sauf que "(^ | \ s)% s" ne correspond qu'au début du nom. Une idée de comment je peux faire correspondre le début d'un mot dans le nom? Je devine que "\ b" devrait être impliqué quelque part ... – AP257
Donc "(^ |)% s" fonctionne, mais "(^ | \ b)% s" et "(^ | \ b)% s" 't. Curieuse. – AP257
Qu'est-ce qu'un "\ b"? "\ s" est un groupe de caractères POSIX pour les espaces. Quel DB utilisez-vous? Essayez d'utiliser la syntaxe alternative: r "(^ | [[: espace:]])% s"% text – lqc