我刚刚开始使用基于类的视图,并且仍然无法预测正确的下拉值的正确方法。
我有一个像这样的简单UpdateView:
class SomeUpdate(PermissionRequiredMixin, UpdateView):
model = SomeModel
form_class = SomeCreateForm
permission_required = 'app.some_model'
template_name_suffix = '_update_form'
raise_exception = True
def form_valid(self, form):
from_page = self.request.GET.get('from')
if from_page:
self.success_url = self.request.GET.get('from')
else:
self.success_url = "/somewhere/"
return super(SomeUpdate, self).form_valid(form)
虽然这有效并且它也会填充CharFields
等,但是下拉菜单未被选中,这使得使用起来非常不舒服。我想要的是当你要编辑它时,已经选择了当前选中的对象字段(UpdateView)。
使用的form
只是标准字段ModelForm
。字段本身是Foreignkey
。
我尝试使用get_initial(self)
等来设置下拉值,但没有成功。
答案 0 :(得分:0)
我为我的问题找到了一个可行的解决方案:
课堂内:
def get_initial(self):
initial = super(MyObjectUpdate, self).get_initial()
try:
field1 = self.get_object().field1
field2 = self.get_object().field2
except:
pass
else:
initial['field1'] = field1.pk
initial['field2'] = field2.pk
return initial
这解决了我的问题,UpdateView扩展类现在返回我要编辑的表单,并在其下拉列表中选择了正确的值。我不确定这是否是正确/最好的方式。