Фильтрация поля ManyToMany если оно пусто в подзапросе
Мне нужно игнорировать условие, если поле ManyToManyField пусто, и наоборот, применить условие, если не пусто, что я пытаюсь сделать:
class Book(models.Model):
author = models.ForeignKey(Author, on_delete=models.CASCADE)
class BookSearch(model.Models):
authors = models.ManyToManyField(Author)
BookSearch.objects.annotate(
books_count=Subquery(
Book.objects.filter(
Q(author__in=OuterRef('authors')) | Q(OuterRef('authors') == None),
).values('id').annotate(c=Count('id')).values('c')[:1]
)
).values('books_count')
В блоке OuterRef ('authors') == None я пытаюсь проверить условие, очевидно что не сработает, это просто пример того чего я хочу достичь, я пытался разобраться но пока не получается, буду благодарен за помощь.