1

다음 코드를 참조하십시오 :속성 재정의 개념은

from django.views.generic.edit import DeleteView 
from .models import Course 

class OwnerMixin(object): 
    def get_queryset(self): 
     qs = super(OwnerMixin, self).get_queryset() 
     return qs.filter(owner=self.request.user)  

class OwnerCourseMixin(OwnerMixin): 
    model = Course 

class CourseDeleteView(OwnerCourseMixin, DeleteView): 
    template_name = 'courses/manage/course/delete.html' 
    success_url = reverse_lazy('manage_course_list') 

나는 쉽게 template_nameCourseDeleteView에서 success_url 속성을 추가하여, 내가 DeleteView의 속성을 무시할 수 있다는 것을 이해할 수있다. 따라서 두 속성은 DeleteView에있는 메서드를 호출하여 적용됩니다.

나를 혼란스럽게하는 이유는 위의 코드에 따라 ~ DeleteView에있는 속성 model = Course을 전달할 수 있다는 것입니다. 그들 사이에 직접적인 상속 관계는 없습니다. 나에게 의미가 없다.

답변

0

특성은 OwnerCourseMixin에서 상속되는 클래스이므로 DeleteView으로는 전송하지 않으며 CourseDeleteView으로 만 전송합니다.

DeleteView을 인스턴스화 한 경우 해당 인스턴스에는 model = Course이 없으므로 교묘하게도 그 사이에는 직접 상속이 없으므로이 인스턴스에는 model = Course이 없을 것입니다. 그러나 CourseDeleteView의 인스턴스는 OwnerCourseMixin에서 계승 된 model = Course이됩니다.

+0

정말 고마워. – JianWei