考虑这些伪模型:
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() 并不会返回额外的字段。
所以,问题:在这种情况下构造初始字典的好方法是什么?