Здравствуйте!
Хочу задать вопрос опытным разработчикам.
У меня есть модель страницы и модель типа страницы: Page и Pagetype.
Вот так осуществлена между ними связь.
type = models.ManyToManyField(Pagetype, blank=True)
Для того, чтоб максимально применимо к проекту работал DetailView я написал такой Mixin:
class UrlViewDetaliMixin(object):
"""
Строка документации
"""
url_field = 'url'
url_kwarg = 'url'
model = Page
modeltype = Pagetype
context_object_name = 'page'
def get_pagetype(self, pagetype_code):
"""
Возвращаем тип страницы по коду
"""
try:
pagetype = self.modeltype.objects.get(
code=pagetype_code
)
except:
raise AttributeError("Ошибка с кодом типа страницы: %s"
% pagetype_code)
return pagetype
def get_object(self, queryset=None):
"""
Возвращаем страницу с учетом ее типа или без нее
"""
url = self.kwargs.get(self.url_kwarg)
if url is not None:
if self.pagetype_code:
pagetype = self.get_pagetype(self.pagetype_code)
obj = get_object_or_404(
self.model,
type=pagetype,
active=True,
**{self.url_field: url}
)
else:
obj = get_object_or_404(
self.model,
active=True,
**{self.url_field: url}
)
else:
raise AttributeError("Нет URLa")
return obj
Подскажите, пожалуйста, нормально получилось или тупость?
P.S. С названием темы тупанул. имел в виду CBV
Updated 28 Oct. 2015, 21:10 by N0rman.