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_nameCourseDeleteViewsuccess_url屬性,我可以在​​覆蓋屬性。通過調用​​中的方法使這兩個屬性生效。

讓我困惑的是爲什麼我可以通過上面的代碼將model = Course的屬性OwnerCourseMixin轉換爲​​。他們之間沒有直接的繼承關係。對我來說完全是無稽之談。

回答

0

您不會將model屬性轉換爲​​,而只能轉換爲CourseDeleteView,因爲這是繼承自OwnerCourseMixin的類。

如果您實例化​​,那麼該實例不會有model = Course,因爲正如您巧妙地聲明的那樣,它們之間沒有直接繼承。但是,CourseDeleteView的實例將具有model = Course,它從OwnerCourseMixin繼承。

+0

很明顯,非常感謝。 – JianWei