2009-10-28 7 views
0

Je veux générer une liste à l'aide de mon modèle djangomodèle django objets à une liste python

dire que j'ai ces modèles:

class AlarmServer(models.Model): 
    ip = models.IPAddressField() 

et une telle liste

server_ips = [i.ipfor i in AlarmServer.objects.all()] 

Doesn » Cela semble fonctionner, qu'est-ce que je fais de mal?

+0

"ne semble pas fonctionner"? Qu'est-ce que ça veut dire? Qu'est-ce qui se passe quand vous essayez? Quel résultat obtenez-vous? Quelles erreurs cela donne-t-il? –

Répondre

4
server_ips = [i.ip for i in AlarmServer.objects.all()] 

Devrait fonctionner (je viens d'ajouter un espace). J'ai essayé cela comme ci-dessous

[email protected] % ./manage.py shell 
Python 2.5.2 (r252:60911, Oct 5 2008, 19:24:49) 
[GCC 4.3.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
(InteractiveConsole) 
>>> from mysite_org.videos.models import Video 
>>> url_list = [v.url for v in Video.objects.all()] 
>>> url_list 
[u'http://media.mysite.org/videos/sblug_jan2009.flv', u'http://media.mysite.org/videos/sblug_feb2009.flv', u'http://media.mysite.org/videos/phpwm_mar2009.flv', u'http://media.mysite.org/videos/sblug_may2009.flv', u'http://media.mysite.org/videos/sblug_june2009.flv', u'http://media.mysite.org/videos/sblug_sep2009.flv', u'http://media.mysite.org/videos/bugjam-oct-2009.flv'] 
+0

Je pense que vous pouvez marquer '.iterator()' à la fin de ce jeu de requête pour des économies de mémoire. 'AlarmServer.objects.all(). Iterator()'. Check out: http://www.djangoproject.com/documentation/models/lookup/ – thornomad

3

values_list

server_ips = [i[0] for i in AlarmServer.objects.values_list('ip')] 
+2

Aucune idée si c'est ce que l'OP veut, mais vous pouvez éviter la compréhension de la liste dans votre exemple en faisant simplement 'AlarmServer.objects.values_list ('ip', plat = Vrai) ' –

Questions connexes