在带有Django泛型类视图的表单中添加已筛选的m2m项

在带有Django泛型类视图的表单中添加已筛选的m2m项,django,django-views,django-class-based-views,Django,Django Views,Django Class Based Views,我有一个应用程序,其中有两个模型。第一种称为场景。第二种称为解决方案。场景和解决方案之间存在M2M。您可以拥有属于场景的任意数量的解决方案,反之亦然。很简单 诀窍是,所有内容都在用户身上过滤。所以我不想看到其他人在我工作时的解决方案或场景 我已经写了一个视图,它是CreateView。它将过滤后的解决方案列表添加到上下文中。一旦它进入上下文,我就在模板中循环它以获取id。我将其添加到表单中 我遇到的问题是有效方法的形式 如何将所选项目添加到保存中,以便将其添加到场景中 以下是我的看法: clas

我有一个应用程序,其中有两个模型。第一种称为场景。第二种称为解决方案。场景和解决方案之间存在M2M。您可以拥有属于场景的任意数量的解决方案,反之亦然。很简单

诀窍是,所有内容都在用户身上过滤。所以我不想看到其他人在我工作时的解决方案或场景

我已经写了一个视图,它是CreateView。它将过滤后的解决方案列表添加到上下文中。一旦它进入上下文,我就在模板中循环它以获取id。我将其添加到表单中

我遇到的问题是有效方法的形式

如何将所选项目添加到保存中,以便将其添加到场景中

以下是我的看法:

class ScenarioCreate(CreateView):

    success_url = reverse_lazy('scenario_list')
    template_name = "gps/create_scenario_form.html"
    model = Scenario
    form_class = ScenarioCreateForm

    def get_context_data(self, **kwargs):
        context = super(ScenarioCreate, self).get_context_data(**kwargs)
        context['solution_list'] = Solution.objects.filter(user=self.request.user)
        return context

    def form_valid(self, form):
        self.object = form.save(commit=False)
        self.object.user = self.request.user
        self.object.solutions = form.cleaned_data['solutions'] # <= what goes here?
        self.object.save()
        form.save_m2m()
        return HttpResponseRedirect(self.get_success_url())

    @method_decorator(login_required)
    def dispatch(self, *args, **kwargs):
        return super(ScenarioCreate, self).dispatch(*args, **kwargs)

更新,我应该在视图中使用get_initial()执行此操作吗?您可以发布您的ScenarioCreateForm吗?我已经更新了问题以包含表单
class ScenarioCreateForm(ModelForm):    
    class Meta:
        model = Scenario
        exclude = ('user', 'created')