[Редактировать] Если вам не нужен набор запросов:
books = [primary_book] + list(book_copies)
Вы можете попробовать использовать это, если вам нужно qs:
primary_books = Book.objects.filter(id=book_id)
book_copies = Book.objects.filter(copy_id=primary_books[0].library_id)
if book_copies:
books = primary_books | book_copies
else:
books = primary_books[0]
Или если вы хотитеПовторите вашу модель, так как она выглядит так, как будто ваши отношения copy_id
- library_id
имеют отношение много к одному:
models.py
class Book(models.Model):
library_id = models.FloatField(max_length=200, null=True, blank=True, unique=True)
title = models.CharField(max_length=400)
primary_book = models.ForeignKeyField('self', to_field='library_id', related_name='book_copies', null=True, blank=True)
просмотров.py
from django.db.models import Q
books = Book.objects.filter(Q(id=book_id)|Q(primary_book__id=book_id))