Скрыть подмножество наборов запросов, используемых в качестве внешнего ключа по умолчанию .... показать полный набор запросов в администраторе Django - PullRequest
0 голосов
/ 02 октября 2018

В моих моделях Django Product принадлежит ProductCategory

class FinancialProduct(models.Model):
    product_category = models.ForeignKey(ProductCategory, null=True)

Я хочу иметь возможность создавать новые ProductCategory «за кадром», так что по умолчаниюони не отображаются ни в одном запросе.

Исключениями являются администратор Django и еще один очень специфический запрос.

Для этого я создал Manager для ProductCategory:

class ProductCategoryManager(models.Manager):
   def get_queryset(self):
      return super().get_queryset().filter(status=ProductCategory.STATUS_PUBLIC)

   def get_complete_queryset(self):
      return super().get_queryset()

Затем в admin.py:

@admin.register(FinancialProduct)
class ProductAdmin(admin.ModelAdmin):
    model = Product

    def get_queryset(self, request):
        return Product.objects.get_complete_queryset()

Обычно это прекрасно работает, но когда я вхожу в Product в админке Django и пытаюсь добавить скрытый ProductCategory, он не может его найти:

product category instance with id 3 does not exist.

Должен ли я идти по пути попытки переопределить наборы запросов, которые использует администратор Django, или есть более разумный способ?В идеале я хочу избежать использования повсюду фильтра, так как люди об этом забывают.


Примечание: я заметил документы на самом деле , не рекомендую такой подход

...