J'ai cette chaîne variable
auxi_espec = '1, 3, 5, 7,'
Et je dois la convertir en tableau afin de créer un jeu de requête où je filtre en utilisant __in code>. (Peut-être que je pense que j'aurai également besoin de couper la dernière virgule).
3 Réponses :
Vous devez utiliser split () code >
fonction:
>>> auxi_espec = '1, 3, 5, 7,' >>> auxi_espec_lst = [int(x.strip()) for x in auxi_espec.split(',') if x] >>> auxi_espec_lst [1, 3, 5, 7]
Si vous voulez analyser ces nombres en entier:
>>> auxi_espec = '1, 3, 5, 7,' >>> auxi_espec_lst = [x.strip() for x in auxi_espec.split(',')][:-1] >>> auxi_espec_lst ['1', '3', '5', '7']
Django accepte de nombreux itérables pour dans la recherche , donc si le format de la chaîne que vous avez mentionné est gravé dans le marbre, cette division est suffisante, comme le fera la liste de chaînes.
ids = auxi_espec[0:-1].split(', ') # ['1', '3', '5', '7'] instances = MyModel.objects.filter(id__in=ids)
Utilisez des expressions régulières, elles sont géniales:
>>> import re >>> auxi_espec = '1, 3, 5, 7,' >>> indices = re.findall(r'(\d+)', auxi_espec) >>> indices ['1', '3', '5', '7'] >>> [int(i) for i in indices] [1, 3, 5, 7]
Pourriez-vous expliquer le filtre en utilisant
__in
, faites-vous référence à quelque chose sur django?