/ Comparação de campos de modelos / select_related - django, banco de dados, django-models, django-rest-framework, django-queryset

Comparação de campos de modelos selecionados - django, banco de dados, django-models, django-rest-framework, django-queryset

Eu olhei para cima na Internet, mas é bem possível que eu não sabia palavras-chave exatas para procurar. Sem mais delongas, a questão.

Eu tenho modelos aproximadamente como seguindo em meus models.py

class Author(models.Model):
author_book_count = models.IntegerField()
author_name = models.CharField(max_length = 64)

class Book(models.Model):
book_author = models.ForeignKey("Author")
book_title = models.CharField(max_length = 128)
book_serial_number = models.IntegerField()
# Field above keep track of order in which book was written
# value of 2 mean that it was second book author wrote and so on

Na minha consulta, posso facilmente fazer o seguinte

queryset = Author.objects.filter(author_name__icontains = "john").select_related("book")
return_data = queryset.filter(book__book_count = x).values("book__book_title")
# Gives me xth book of all authors in the queryset

Quero os livros mais recentes dos autores, ou seja, author_book_count == book_serial_number, então qual filtro devo usar no meu queryset.

Respostas:

0 para resposta № 1

Tropeçando aqui e ali e tentando várias combinações de termos de pesquisa, eu aprendi sobre F que resolve o problema que pretendo resolver bem. Aproximadamente a abordagem seria a seguinte.

return_data = queryset.filter(book__book_serial_number = F("author_book_count")).values("book__book_title")