2011-05-04 3 views
2

J'ai une liste d'objets de modèle:django, liste des modèles à la liste des chaînes

juste un exemple (je ne fais pas vraiment une liste de tous()):

class Tag(models.Model): 
    name = models.CharField(max_length=50,primary_key=True) 
    #Some other fields.... 

    def __str__(self): 
     return self.name 

mylist = list(Tag.objects.all()) 

Qu'est-ce le meilleur moyen de convertir cela en une liste de chaînes?
Dois-je itérer la liste?

je faisais quelque chose comme:

newList = [ t.str() for t in mylist ] 

une meilleure façon?

+1

Je dirais que votre chemin est bon. – brandizzi

+0

Je pense que si vous avez vraiment besoin d'une liste de chaînes votre code est bien. La question est, avez-vous vraiment besoin de convertir en chaîne? Souvenez-vous que les modèles utilisent votre méthode '__str__' ou' __unicode__' pour que vous n'ayez pas besoin de les passer. Vous pouvez aussi faire [x.name pour x dans mylist], cela peut être un peu plus rapide. –

+0

Ce n'est pas pour un modèle ... Je reçois une liste d'éléments avec une requête complexe. alors j'ai besoin d'obtenir l'un des champs en tant que chaîne et passer cette liste à une autre requête –

Répondre

3

Ce

newList = [ str(t) for t in mylist ] 

ou

newList = map(str, myList) 

Mais en général, nous ne vous embêtez pas. Nous laissons simplement au modèle de convertir l'ensemble de requêtes en chaînes lorsque le modèle est rendu.

+0

Comment le rendre dans le modèle? –

+0

La méthode habituelle: '{% pour l'élément de la liste%} {{item}} {% endfor%}' Les éléments sont automatiquement convertis en chaînes dans le modèle. Vous devriez voir ceci: http://docs.djangoproject.com/fr/1.3/ref/templates/api/ –

Questions connexes