id summary reporter owner description type status component version severity resolution keywords cc stage has_patch needs_docs needs_tests needs_better_patch easy ui_ux 16931 """get_context_data"" should follow MRO" linovia nobody "Actually, mixins do not allow to cumulate the context building. For example: class CommentMixin(FormMixin, SingleObjectMixin): pass In that case, we expect both FormMixin and SingleObjectMixin to build their context. However, as none of them use super in their get_context_data do use super, we only get the FormMixin context. The reason to use super here is not to call the parent get_context_data but the next class in MRO. {{{ class A(object): def a(self): print ""A"" if hasattr(super(A, self), 'a'): super(A, self).a() class B(object): def a(self): print ""B"" if hasattr(super(B, self), 'a'): super(B, self).a() class C(object): def a(self): print ""C"" class D(B, A): pass class E(C, A): pass print ""MRO:"", [x.__name__ for x in D.__mro__] d = D() d.a() print ""MRO:"", [x.__name__ for x in E.__mro__] e = E() e.a() }}} With that example, one can see that d calls both B then A while e only calls C. While this might usually be unnoticed, it prevents Mixin to be chained. For example, mixing a single object item with a list (for a shop: one category with the associated products, for a bug tracker: a milestone with the associated tickets) or a single item with a form such as a post with a comment form. " New feature new Generic views 1.3 Normal Unreviewed 0 0 0 0 0 0