django - 在 def 帖子下以 django 形式默认更新视图操作
问题描述
与项目中的另一个编码员一起工作。他的更改阻止了UpdateView
某些表单上的保存编辑。我意识到为什么....他定义了一个
def post
这适用于他正在处理的案例,但需要一个仅执行默认更新的 else 操作。当他没有自动完成所有操作时,我不确定该怎么UpdateView
做。
的代码UpdateView
:
class ProviderUpdateView(UpdateView):
model = Provider
form_class = ProviderForm
provider_form_class = ProviderForm
provider_term_form_class = ProviderTermForm
template_name = 'ipaswdb/provider/provider_form.html'
success_url = '/ipaswdb/provider/'
def get_context_data(self, **kwargs):
context = super(ProviderUpdateView, self).get_context_data(**kwargs)
provider = context['object']
context['provider_id'] = provider.id
prov = Provider.objects.get(pk=provider.id)
#print "provider: ",
#print prov
#print "provider terminated: ",
#print prov.is_terminated
if prov.is_terminated:
provider_form = ProviderFormView(instance=prov)
context['readonly'] = True
else:
print("NOT TERMINATED SO LETS DO THIS")
provider_form = ProviderForm(instance=prov)
context['readonly'] = False
context['provider_form'] = provider_form
provider_term_form = ProviderTermForm()
context['provider_term_form'] = provider_term_form
### Get the list of GroupLocations, but remove the current one this provider is associated with
### I just need the grouplocation id and the name
#grplocs = GroupLocationProvider.objects.filter(
return context
def post(self, request, *args, **kwargs):
#print self.request.POST.keys()
#print self.request.POST.values()
print("Posting...")
if self.request.POST.has_key('terminate'):
provider = Provider.objects.get(pk=kwargs['pk'])
form = ProviderTermForm(request.POST)
if form.is_valid():
print "Terminating Provider: ",
print provider
provider_term = ProviderTerm()
provider.is_terminated = True
provider.save()
### Update the term fields
provider_term.provider = provider
provider_term.old_id = provider.id
provider_term.term_date = form.cleaned_data['term_date']
provider_term.term_comment = form.cleaned_data['term_comment']
provider_term.save()
return HttpResponseRedirect(self.success_url)
我知道我需要在帖子中对这个声明做一个 else :
if self.request.POST.has_key('terminate'):
我只是不确定在UpdateView
. 我测试了我的假设,即他的代码破坏了编辑和保存提供程序的能力,因为我完全删除了 def 帖子,并且所有这些都与UpdateView
automagic 配合得很好。既然我们是压倒一切的?在def post
我看来,我们必须自己处理定期更新,只是不确定看起来如何。
解决方案
推荐阅读
- java - 如何轻松地从 SWT Combo 下拉列表中获取数据引用
- rust - Why Rust allows declaring same variable name twice in a scope?
- php - 如何使用标准输出中的键/值作为 mySQL 数据库更新的输入数据?
- elasticsearch - 在弹性搜索中创建别名时出现安全特权异常
- r - ggplot2中的分组堆积条形图,其中每个堆栈对应于其y轴值
- angular - 如何查看 Angular 项目的实时更改?
- python - 在正文中传播函数参数
- flutter - Flutter:导航到另一个屏幕时变量重置为默认值
- javascript - webpack 未知单词 > 1 | 从“反应”导入反应
- math - 我是否可以正常分配范围在 0 和 1 之间且在 0 附近具有严重正偏斜的变量?