From 1c7789a286fade6cb3b809fbc5cf3ba469656d25 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Mon, 24 Nov 2025 12:35:43 +0000 Subject: [PATCH] Add generic relationship to allow reverse lookups --- src/backend/InvenTree/InvenTree/models.py | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/src/backend/InvenTree/InvenTree/models.py b/src/backend/InvenTree/InvenTree/models.py index 9f2898f466..8b33f2ffbb 100644 --- a/src/backend/InvenTree/InvenTree/models.py +++ b/src/backend/InvenTree/InvenTree/models.py @@ -6,6 +6,7 @@ from string import Formatter from typing import Any, Optional from django.contrib.auth import get_user_model +from django.contrib.contenttypes.fields import GenericRelation from django.core.exceptions import ValidationError from django.db import models from django.db.models import QuerySet @@ -500,6 +501,8 @@ class InvenTreeParameterMixin(InvenTreePermissionCheckMixin): and provides the following methods: """ + parameters = GenericRelation('common.Parameter', related_query_name='+') + def delete(self, *args, **kwargs): """Handle the deletion of a model instance. @@ -508,18 +511,6 @@ class InvenTreeParameterMixin(InvenTreePermissionCheckMixin): self.parameters.all().delete() super().delete(*args, **kwargs) - @property - def parameters(self) -> QuerySet: - """Return a queryset containing all parameters for this model.""" - return self.parameters_for_model().filter(model_id=self.pk) - - def parameters_for_model(self) -> QuerySet: - """Return a QuerySet containing all parameters for this model class.""" - from common.models import Parameter - - model_type = self.__class__.__name__.lower() - return Parameter.objects.filter(model_type=model_type) - class InvenTreeAttachmentMixin(InvenTreePermissionCheckMixin): """Provides an abstracted class for managing file attachments.