2012-08-16 53 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

相關問題