В моих моделях 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, или есть более разумный способ?В идеале я хочу избежать использования повсюду фильтра, так как люди об этом забывают.
Примечание: я заметил документы на самом деле , не рекомендую такой подход