Невозможно получить объект модели StackedInline, используя get_object_or_404.
Модуль ((это модель StackedInLine) связан с курсом через внешний ключ.
def dispatch(self, request, module_id, model_name, id=None):
self.module = get_object_or_404(Module, id=module_id, course__owner=request.user)
self.model = self.get_model(model_name)
if id:
self.obj = get_object_or_404(self.model, id=id, owner=request.user)
return super(ContentCreateUpdateView, self).dispatch(request, module_id, model_name, id)
Модели курсов и модулей ниже
class Course(models.Model):
owner=models.ForeignKey(User,related_name='courses_created',on_delete=models.CASCADE)
title=models.CharField(max_length=200)
slug=models.SlugField(max_length=200,unique=True)
overview=models.TextField()
created=models.DateTimeField(auto_now_add=True)
class Meta:
ordering=('-created',)
def __str__(self):
return self.title
class Module(models.Model):
course=models.ForeignKey(Course,related_name='modules',on_delete=models.CASCADE)
title=models.CharField(max_length=200)
description=models.TextField(blank=True)
order=OrderField(blank=True,for_fields=['course'])#ordering of modules wrt courses
def __str__(self):
return '{}. {}'.format(self.order,self.title)