Как объединить наборы запросов из одной модели
Я хочу объединить (|) серию QuerySets:all_english_text в цикле:
tag_result = Tag.objects.get(id=all_tag[index])
all_english_text = tag_result.notes.all().values('english_text', 'id')
следующим образом:
def list_by_tag_post(request):
# get POST
all_tag = request.POST.getlist('tag_list')
for index in range(len(all_tag)):
tag_result = Tag.objects.get(id=all_tag[index])
all_english_text = tag_result.notes.all().values('english_text', 'id')
result = list(chain(*all_english_text)) # Merging method
all_english_text = result
# to template
context = {'all_english_text': all_english_text, 'all_tag': all_tag}
return render(request, 'list_by_tag.html', context)
Было испробовано 3 метода, все они не сработали:
result = list(chain(*all_english_text)) # Merging method 1
result = chain(*all_english_text) # Merging method 2
result = all_english_text.union(*all_english_text))# Merging method 3
Это должно быть возможно в одном запросе.
Не зная, что такое Tag.notes это может быть не совсем верно. Я предполагаю, что это обратная зависимость от ForeignKey на модели Note (Note.tag)
all_english_text = Note.objects.filter(tag_id__in=all_tag).values('english_text', 'id')