1
Django Unleashedという本を読んだとき、私はこのコードスニペットに出会いました。なぜNewsLinkGetObjectMixinが別の基本クラスStartupContextMixinで定義されているクラス変数startup_slug_url_kwargにアクセスできるのだろうと思っていましたか?Pythonで他の親クラスの親クラスアクセス変数を使用できますか?
class NewsLinkGetObjectMixin():
def get_object(self, queryset=None):
startup_slug = self.kwargs.get(
self.startup_slug_url_kwarg)
newslink_slug = self.kwargs.get(
self.slug_url_kwarg)
return get_object_or_404(
NewsLink,
slug__iexact=newslink_slug,
startup__slug__iexact=startup_slug)
class StartupContextMixin():
startup_slug_url_kwarg = 'startup_slug'
startup_context_object_name = 'startup'
def get_context_data(self, **kwargs):
startup_slug = self.kwargs.get(
self.startup_slug_url_kwarg)
startup = get_object_or_404(
Startup, slug__iexact=startup_slug)
context = {
self.startup_context_object_name:
startup,
}
context.update(kwargs)
return super().get_context_data(**context)
class NewsLinkCreate(NewsLinkGetObjectMixin, StartupContextMixin, CreateView):