2012-08-16 52 views
0

我正在尝试使用ModelChoiceField从外部数据库获取填充的值。如何使用Django将ModelChoiceField与外部数据库值结合使用

我在setting.py添加一个附加的数据库,并建立了一个externaldb.py文件在我的应用程序如下:

from django.db import connections 

def Location(): 

    rs = [] 

    cursor = connections['mydb'].cursor() 
    cursor.execute("SELECT city FROM db.data_center WHERE removed is null;") 
    zones = cursor.fetchall() 

     for v in zones[::]: 
      rs.append(v) 

的使用python manage.py壳我能做到这一点

>>>from platform.externaldb import Location 
>>>print Location() 
>>>[(u'India-01',), (u'Singapore-01',), (u'Europe-01',)] 

所以我得到的值,但如何我得到的出现在一个下拉框。这是我的forms.py

forms.py

from platform.externaldb import Location 

zone = forms.ModelChoiceField(Location(), label='Zone') 

但是,这并不为我工作..我这样做,所以3个值是如何出现在ModelChoiceField下拉列表?

谢谢 - 奥利

回答

2

你可以利用ChoiceField表单域甚则ModelChoiceField。使用ModelChoiceField的问题是它期望QuerySet。 ChoiceField允许您通过列表添加项目。

locations = forms.ChoiceField(choices=Locations(), label="Zone") 

编辑

以前,我曾用ModelChoiceField

locations = forms.ModelChoiceField(queryset=Location.objects.all(), label="Zone") 

只要Location是一个模型(这点我是不知道的基础上,将你的工作代码)

+0

我会尽力..虽然这似乎工作zone = forms.ModelChoiceField(queryset = Locations.objects.all(),label ='Zone') 。我以为有人发布了,但也许编辑他们的答案。我以为我试过queryset = Locations.objects.all()之前,但现在它的工作.. – Oli 2012-08-16 11:36:04

+0

使用ModelChoiceField和查询集不起作用,因为我以前的评论建议。我会尝试ChoiceField选项 – Oli 2012-08-16 11:45:25

+0

我一直无法获得forms.ChoiceField(选择= Locations(),label =“Zone”)才能正常工作。我一直得到这个错误'太多的值解包'。我会继续挖掘..但任何想法? – Oli 2012-08-16 14:09:56

相关问题