外部ソースから提供された初期データを django モデルフォームに入力しようとしています。これを実現するために、まず外部ソースから必要なすべてのデータを取得します。
url =('http://myapi.example.com')
data = urllib2.urlopen(url)
result = json.load(data)
api_data_name = result['properties']['name']
api_data_type = result['properties']['type']
次に、フォームの初期データとして機能する dict を入力します。
data = {}
for field in my_model._meta.fields:
if field.name == 'name':
data[field.name] = api_data_name
form = MyEditForm(initial=data)
次に、フォームをテンプレートに渡し、初期データが期待どおりにテキスト フィールドに入力されますが、外部ソースから受け取った文字列に基づいて選択フィールドの値を設定できるようにする必要がありますが、そうではありません次のようなことをしているので、どうすればそれを達成できますか?
if field.name == 'type':
data[field.name] = api_data_type
api_data_type
選択要素にオプション値として「0」、「1」、「2」などがあり、変数から取得した長い説明ではないため、ジョブを実行できません。
ビューの選択フィールドのすべてのオプションから long_description を取得して、<option value="1">long_description</option>
それぞれを比較できるようにするにはどうすればよいapi_data_type
ですか?
私のmodels.pyとforms.pyのサンプルを次に示します。
#models.py
TYPE = (
('0',_(u'Type1')),
('1',_(u'Type2')),
('2',_(u'Type3')),
)
class MyModel(models.Model):
...
type=models.CharField(max_length=30,choices=TYPE,blank=True)
...
#forms.py
class MyEditForm(forms.ModelForm):
class Meta:
model = MyModel
widgets = {
...
'type': Select(attrs={'class':'select-small span2'}),
...
}