Как отфильтровать queryset по manytomany модели?
В двух приложениях модели с uuid
через ManyToManyField
. Надо выбрать все объекты первой модели и во второй отфильтровать только те, в которых встречается related_uuid из первой модели.
Выдает ошибку: django.db.utils.NotSupportedError: (1235, "This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'")
models apps orders
class Orders(models.Model):
serial = models.CharField(max_length=150, blank=True, verbose_name='Серийный')
uuid = models.ManyToManyField('RelatedUuid')
class RelatedUuid(models.Model):
related_uuid = models.CharField(max_length=25, verbose_name='uuid', unique=True)
models apps storehouses
class StoreRelated(models.Model):
name = models.CharField(max_length=150, blank=True, verbose_name='Склад')
uuid = models.ManyToManyField('RelatedUuid')
class RelatedUuid(models.Model):
related_uuid = models.CharField(max_length=25, verbose_name='uuid', unique=True)
views apps orders
from Storehouse.models import StoreRelated
queryset = Orders.objects.all()
uuid_list = queryset.values_list('uuid__related_uuid', flat=True)
print(uuid_list) # <QuerySet ['aWcSrm955DseQZXip9h9zp', 'aauegVkPk8FkGEtkr8wXaQ']>
store_queryset = StoreRelated.objects.filter(uuid__related_uuid__in=uuid_list) # тут error
что не так? как правильно отфильтровать вторую модель?
queryset = Orders.objects.all()
uuid_list = queryset.values_list('uuid__related_uuid', flat=True)
uuid_list = list(uuid_list)
print(uuid_list) # <QuerySet ['aWcSrm955DseQZXip9h9zp', 'aauegVkPk8FkGEtkr8wXaQ']>
store_queryset = StoreRelated.objects.filter(uuid__related_uuid__in=uuid_list) # тут error
Так попробуй. Джанго возвращает расширенный list, Питон не всегда его понимает