1
votes

Django: convertir une chaîne en tableau

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).


1 commentaires

Pourriez-vous expliquer le filtre en utilisant __in , faites-vous référence à quelque chose sur django?


3 Réponses :


1
votes

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']


0 commentaires

1
votes

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)


0 commentaires

0
votes

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]


0 commentaires