0
这里是事情: 我有两个模型 - 组和存储。我想更新数据。但我的模型组可以更新我的数据,我的模型存储can't.So调试我的代码,并找出为什么我的存储数据无法更新的原因:)上的页面加载叫twice.Once的funtion get_context_data(,两次形式post.But功能form_valid不叫。 所有相同的代码,但不同result.Someone能告诉我为什么发生这种情况 感谢Django UpdateView get_context_data函数调用两次
代码:
class Group(models.Model):
id=models.AutoField(primary_key=True)
name=models.CharField(max_length=100,default='')
info=models.CharField(max_length=100,default='')
class Storage(models.Model):
id=models.AutoField(primary_key=True)
disk_size=models.CharField(max_length=100,default="")
disk_path=models.CharField(max_length=100,default="")
info=models.CharField(max_length=100,default="")
class ManagerStorageUpdateView(LoginRequiredMixin,UpdateView):
model = models.Storage
form_class = forms.StorageCreateUpdateForm
template_name = 'new_update_storage.html'
success_url = reverse_lazy('manager:storage')
def get_context_data(self, **kwargs):
context = super(ManagerStorageUpdateView, self).get_context_data(**kwargs)
hosts = models.Host.objects.all()
storage_hosts = [host.id for host in self.object.hosts.all()]
context.update({
'hosts':hosts,
'storage_hosts':storage_hosts
})
return context
def form_valid(self, form):
host_storage = form.save()
hosts_id_list = self.request.POST.getlist('hosts',[])
hosts = models.Host.objects.filter(id__in=hosts_id_list)
host_storage.hosts.clear()
host_storage.hosts.add(*hosts)
host_storage.save()
return super(ManagerStorageUpdateView,self).form_valid(form)
def get_success_url(self):
return self.success_url
Thanks.I重新编写该Storage.Always的更新视图相同的代码,并将其与我form_valid()。Tab键或空格或什么work.Maybe一些问题。 – YoLoveLife