在许多Django CreateViews中传递数据

时间:2016-09-08 13:33:49

标签: django django-class-based-views

我有几个共享属性course_offering的模型。在我的网站上,属性的相关值通常由url中的关键字参数确定。因此,在CreateView的许多子类中,我希望自动将相关值传递给表单。

对于任何特定的模型类,this post提供了一种方法:覆盖get_form_kwargs()以设置初始对象。例如,在本案例中,

class OfferingMixin(Object):
    def get_course_offering(self,**kwargs):
        offering_slug = self.kwargs['offering_slug']
        course_offering = CourseOffering.objects.get(
            slug=offering_slug)
        return course_offering

class CreateSyllabusView(OfferingMixin,CreateView):
    model=Syllabus
    def get_form_kwargs(self,**kwargs):
        course_offering=self.get_course_offering(**kwargs)
        instance = Syllabus(course_offering=course_offering)
        kwargs.update({'instance':instance})
        return kwargs

但是,这适用于固定的模型类,我想处理许多模型类,同时避免不必要的代码重复。例如,是否有可能以某种方式将CreateView子类化为,例如,OfferingCreateView,然后将OfferingCreateView子类化为CreateSyllabusView?如果是这样,我不知道怎么做!当然,可能是这个想法完全被误导了,在这种情况下,学习一个好的方法会很好。提前谢谢。

0 个答案:

没有答案