Обратный поиск по многим полям с помощью TreeQuerySet
Я не могу найти путь к решению моей проблемы, я пробовал следовать многочисленным руководствам, но ничего не получается. Я искал в этих местах (и в других) -
Django Model API обратный поиск отношений "многие ко многим" через промежуточную таблицу
.https://www.revsys.com/tidbits/tips-using-djangos-manytomanyfield/
.https://docs.djangoproject.com/en/3.2/topics/db/examples/many_to_many/
https://readthedocs.org/projects/django-mptt/downloads/pdf/latest/
class CategoryTree(MPTTModel): title = models.CharField(max_length=120, default="no name") slug = models.SlugField(blank=True) timestamp = models.DateTimeField(auto_now_add=True) active = models.BooleanField(default=True) parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children') products = models.ManyToManyField(Product, blank=True) class MPTTMeta: order_insertion_by = ['title'] class Product(models.Model): title = models.CharField(max_length=120) slug = models.SlugField(blank=True, unique=True) description = models.TextField() price = models.DecimalField(decimal_places=2, max_digits=20, default=39.99) image = models.ImageField(upload_to=upload_image_path, null=True, blank=True) featured = models.BooleanField(default=False) active = models.BooleanField(default=True) timestamp = models.DateTimeField(auto_now_add=True) is_digital = models.BooleanField(default=False) # User Library
Вот лишь некоторые из моих неудачных попыток -
# print(CategoryTree.objects.get(products= "13").first())
# print(Product.objects.all().filter(id="13"))
# # print(Product.objects.all().filter(id="13").product)
# print(Product.objects.all().filter(id="13").all().CategoryTree_set.all())
# print(CategoryTree.objects.filter(title='LasVegas'))
Допустим, в модели Product у меня есть товар с названием Iron Man Toy, мне нужно найти способ найти категорию (или категории), к которой он принадлежит, в модели CategoryTree. У меня было одно решение, которое близко подошло к решению моих проблем, но если товар находился в двух разных категориях, то я получал сообщение об ошибке