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)

pythonmanage.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ドロップダウンリストに表示されるようにするにはどうすればよいですか?

ありがとう-オリ

4

1 に答える 1

2

ChoiceFieldではなく、フォームフィールドを使用できますModelChoiceField。を使用する際の問題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 に答える