2009-10-28 52 views
0

我想用我的Django的模型来生成一个列表Django的模型对象的Python列表

说我有这些模型:

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

和这样的列表

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

隐而不宣” t似乎工作,我做错了什么?

+0

“似乎不工作”?那是什么意思?当你尝试时会发生什么?你会得到什么输出?它给了什么错误? – 2009-10-28 09:31:54

回答

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

应该工作(我只是增加了一个空格)。我试过这个如下

[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

我认为你可以将'.iterator()'加到这个查询集的末尾来节省内存。 'AlarmServer.objects.all()。迭代器()'。查看:http://www.djangoproject.com/documentation/models/lookup/ – thornomad 2009-10-28 15:00:37

3

values_list

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

不知道这是OP想要什么,但是你可以通过简单地执行'AlarmServer.objects.values_list( 'ip',flat = True)' – 2009-10-28 10:01:38