我尝试了很多方法来重写UpdateView中的get_form方法,但都没有成功。我想我要做的就是这样
class SystemUpdateView(UpdateView)
def get_form(self, form_class):
form = super(SystemUpdateView, self).get_form(form_class)
//here I do some modifications to the form
....
....
//then return that modified form
return form
但它什么也没做。。。。有人知道为什么吗? 我只是不明白为什么这样不行
我对CreateView做了同样的修改,它神奇地工作了,但在UpdateView中没有。在
但它什么也不做,也不出错。 然而,CreateView中的工作原理完全相同。。。。在
好吧。下面是CreateView中的工作原理
^{pr2}$现在在SystemUpdateView中
class SystemUpdateView(AutoEventLogMixin, SuccessMessageMixin, PermissionRequiredMixin, UpdateView):
"""CRUD update view for :class:`~.System` objects"""
form_class = SystemForm
model = System
permission_required = 'services.change_system'
success_message = "System '%(name)s' updated successfully."
template_name = 'systems/system_form.html'
# when system edited need to modify accountable_team_history
def form_valid(self, form):
system = self.get_object()
if form.instance.accountable_team is not None:
if system.accountable_team == form.instance.accountable_team:
pass
else:
try:
old_team_history = system.accountable_team_history.get(end_date__isnull=True)
old_team_history.end_date = datetime.datetime.now()
old_team_history.save()
except AccountableTeamHistory.DoesNotExist:
pass
new_history = AccountableTeamHistory(resource=system,
accountable_team=form.instance.accountable_team,
effective_date=datetime.datetime.now())
system.accountable_team_history.add(new_history)
system.save()
return super(SystemUpdateView, self).form_valid(form)
def get_form(self, form_class):
form = super(SystemUpdateView, self).get_form(form_class)
form.fields['primary_purpose_business_use'].label= "Primary purpose/business use"
form.fields['secondary_purpose_business_uses'].label= "Secondary purpose/business uses"
form.fields['primary_purpose_business_use'].choices = list()
form.fields['secondary_purpose_business_uses'].choices = list()
for optgroup in BusinessSystemType.objects.filter(parent__isnull=True):
form.fields['primary_purpose_business_use'].choices.append(
(optgroup.name,
list((subtype.id, subtype.name) for subtype in BusinessSystemType.objects.filter(parent=optgroup))))
form.fields['secondary_purpose_business_uses'].choices.append(
(optgroup.name,
list((subtype.id, subtype.name) for subtype in BusinessSystemType.objects.filter(parent=optgroup))))
return form
此视图对窗体没有任何影响。在
目前没有回答
相关问题 更多 >
编程相关推荐