次の疑似モデルを検討してください。
class City(models.Model):
name = models.CharField()
region = models.ForeignKey(Region)
class Region(models.Model):
name = models.CharField()
country = models.ForeignKey(Country)
class Country(models.Model):
name = models.CharField()
そして、このようなフォーム:
class MyForm(forms.Form):
city = forms.CharField()
region = forms.CharField()
country = models.CharField()
UpdateView に現在の値を表示させたいので、次のようにイニシャルを設定しました。
model_initial = City.objects.filter(id=self.object.id).values()[0]
form = MyForm(initial=model_initial)
self.object が既に利用可能であるため、これはちょっとばかげているので、値のマッピングを手動で行うことができます
とにかく、これは機能しますが、関係はキャプチャされないため、次のことができます。
model_initial = City.objects.filter(id=self.object.id).values()[0]
model_initial.update({'region':Somequery, 'country':Somequery})
form = MyForm(initial=model_initial)
しかし、それはかなり厄介で、おそらく不要です。select_related が私に与えるものを確認しようとしましたが、そのクエリで values() を呼び出すと余分なフィールドが返されません。
質問: この場合、最初の dict を作成する良い方法は何ですか?