de Django On suppose un modèleComment filtrer CommaSeparatedIntegerField
class Foo(models.Model):
bar = models.CommaSeparatedIntegerField('Filter Me!')
Le contenu du bar
pourrait ressembler, par exemple, 12,35,67,142
.
Je veux interroger tous les Foo
s, qui ont un 42
dans bar
:
all_42_foos = Foo.objects.filter(bar__contains="42")
qui ne donne pas le résultat correct, puisque CommaSeparatedIntegerField
hérite de CharField
et l'évaluation du filtre utilise le contenu de la chaîne de champ (correspondant à l'exemple ci-dessus avec 142
, aussi).
Comment puis-je avoir un filtre, qui fait un .split(",")
sur le champ bar
avant de rechercher le 42
? Je ne veux vraiment pas que bar
devienne un ManyToMany
, car ce serait un terrible frais généraux.
Merci! Oui, c'est bavard, mais ça fait l'affaire. Une remarque: il faut aussi tester un '42,' (virgule) exacte, puisque c'est aussi valable pour ce champ. – Boldewyn