2
Я пытаюсь добавить функциональность, чтобы пользователь мог выбрать несколько фильтров просмотра для набора элементов на моем сайте (SDK). Код, который у меня есть, возвращает SDK, которые соответствуют любому из тегов фильтров. Как я могу показать только SDK, которые соответствуют всем тегам?Попытка запроса таблицы с несколькими фильтрами
models.py
class AppSdks(models.Model):
sdk_name = models.CharField(max_length=256)
sdk_type = models.CharField(max_length=256)
company_url = models.URLField(max_length=1024)
logo = models.URLField(max_length=1024)
description = models.TextField()
ios = models.BooleanField()
android = models.BooleanField()
class AppSdksTags(models.Model):
sdk = models.ForeignKey(AppSdks)
tag = models.CharField(max_length=128)
views.py
if request.method=="POST":
all_tags = request.POST.getlist('filter_tags')
for each_sdk in sdks:
results=[]
sdk_list=[]
sdks = AppSdks.objects.all()
for each_tag in all_tags:
sdks = AppSdksTags.objects.filter(tag=each_tag).values_list('sdk',flat=True).distinct()
for each_sdk in sdks:
if each_sdk not in sdk_list:
sdk_list.append(each_sdk)
for each_sdk in sdk_list:
sdk = AppSdks.objects.get(id=each_sdk)
results.append(sdk)
Это также почти бессрочно более эффективно. –
Тег не является полем в AppSdks. "Не удается разрешить ключевое слово 'тега' в поле Варианты:. Андроид, appsdkstags, company_url, описание, идентификатор, ИОС, логотип, sdk_name, sdk_type" – satjot
SDKs = sdks.filter (appsdkstags__tag = each_tag) – satjot