我的代码:
class DataSourceCreateView(CreateView):
model = DataSource
form_class = DataSourceForm
template_name = 'engine/datasource_create.html'
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs['user'] = self.request.user
return kwargs
def form_valid(self, form):
f = form.save(commit=False)
f.creator = self.request.user
f.save()
dsr_pk = form.cleaned_data['dataset_request']
if dsr_pk != 'noval':
print(dsr_pk)
dsr = DatasetRequest.objects.get(pk=dsr_pk)
f.dataset_requests.add(dsr)
print(f)
print(f.dataset_requests)
f.save()
return super(DataSourceCreateView, self).form_valid(form)
为什么不是我的形式加入dsr到f.dataset_requests?形式保存并继续不添加dsr到f.dataset_requests。我将dataset_request字段设置为单个选择字段,而不是DataSourceForm中的多个选择字段。
我认为你可以save_m2m用来保存ManyToMany关系。你可以尝试这样:
class DataSourceCreateView(CreateView):
model = DataSource
form_class = DataSourceForm
template_name = 'engine/datasource_create.html'
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs['user'] = self.request.user
return kwargs
def form_valid(self, form):
f = form.save(commit=False)
f.creator = self.request.user
f.save()
f.save_m2m()
return HttpResponseRedirect(self.get_success_url()) # Not calling Super here
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。