我有几个共享属性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?如果是这样,我不知道怎么做!当然,可能是这个想法完全被误导了,在这种情况下,学习一个好的方法会很好。提前谢谢。