Как создается код категории для каждого предоставляемого объекта:
Код: Выделить всё
@property
def get_code(self):
return f"{self.category.get_code}-{self.code}"
Код: Выделить всё
@property
def get_code(self):
if not self.parent:
return self.code
else:
return f"{self.parent.get_code}-{self.code or self.pk_code}"
где a, b и c — категории, а 6 — собственный код предоставляемого объекта.
Я хочу иметь возможность искать предоставляемый объект в администраторе Django, используя его полный код, но, поскольку это не поле предоставляемого объекта, это невозможно сделать напрямую, добавив метод get_code в поле поиска.
Я реализовал переопределение метода get-search_results в своем классе ProvidableAdmin:
Код: Выделить всё
def get_search_results(self, request, queryset, search_term):
# annotation for the service_code.
queryset = queryset.annotate(
service_code=Concat(
"category__parent__parent__code",
Value("-"),
"category__parent__code",
Value("-"),
"category__code",
Value("-"),
"code"
)
)
queryset, may_have_duplicates = super().get_search_results(request, queryset, search_term)
return queryset, may_have_duplicates
Это работает, если предоставляемые объекты имеют 3 родительские категории.
Как мне выполнять поиск, если у моих предоставляемых категорий несколько родительских категорий?
Мне нужно динамически создавать service_code для каждой записи.
Подробнее здесь: https://stackoverflow.com/questions/792 ... of-parents
Мобильная версия