0

我正在尝试使用 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

表格.py

from platform.externaldb import Location

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

但这对我不起作用.. 我该怎么做才能使 3 个值出现在 ModelChoiceField 下拉列表中?

谢谢 - 奥利

4

1 回答 1

2

您可以使用ChoiceField表单字段而不是ModelChoiceField. 使用 a 的问题ModelChoiceField是它需要一个 QuerySet。ChoiceField允许您改为通过列表添加项目。

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

编辑

以前,我使用过ModelChoiceField

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

只要Location是模型就可以工作(根据您的代码我不确定)

于 2012-08-16T11:26:32.473 回答