我正在尝试使用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 shell我可以做到这一点
>>>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下拉列表中?
谢谢 - Oli
答案 0 :(得分:2)
您可以使用ChoiceField
表单字段,而不是ModelChoiceField
。使用ModelChoiceField
的问题是它需要QuerySet。 ChoiceField
允许您通过列表添加项目。
locations = forms.ChoiceField(choices=Locations(), label="Zone")
修改强>
以前,我使用了ModelChoiceField
:
locations = forms.ModelChoiceField(queryset=Location.objects.all(), label="Zone")
只要Location
是一个模型(根据您的代码我不确定),它就会起作用