Resumo da verificação conjunta da multi-tabela da operação do Django ORM

de django.shortcuts import render, HttpResponse

# Crie suas visualizações aqui.


dos modelos de importação app01

consulta def (solicitação):

# #################### Consulta baseada em objeto (subconsulta) ###################### #########
# Por campo (publicação)
# Livro um para muitos -----------------> publicar
# <--------- -------
# book_set.all ()

# Encaminhar consulta por campo:

# Consultar a caixa de correio do editor deste livro em python

# python = models.Book.objects.filter (title = "python"). first ()
# print (python.publish.email)


# Consulta reversa em minúscula pelo nome da tabela _set.all ()

# Livros publicados pela Apple Press

# publish_obj = models.Publish.objects.filter (name = "苹果 出版社") .first ()
# para obj em publish_obj.book_set.all ():
# print (obj.title)

# Por campo (autores.all ())
# livro Muitos para muitos -----------------------> author
# <-------- --------
# book_set.all ()


# Consulta a idade do autor do python
# python = models.Book.objects.filter (title = "python"). Primeiro ()
# do autor em python.authors.all ():
# print (author.name, author.age)

# Consultar os títulos dos livros publicados por alex

# alex = models.Author.objects.filter (name = "alex"). first ()
# para livro em alex.book_set.all ():
# print (book.title)

# Por campo authorDetail
# Autor muitos-para-muitos -----------------------> authordetail
# <-------------- -
# Autor pelo nome da tabela



# Consultar o número de telefone de alex # alex = models.Author.objects.filter (name = 'alex'). First ()
# print (alex.authorDetail.telephone)


# Consultar o nome do autor em Shandong

# ad_list = models.AuthorDetail.objects.filter (addr = "shandong")
#
# para anúncio em ad_list:
# print (ad.author.name)

 

'' '
Corresponde ao sql:

selecione publish_id do livro em que title = "python"
selecione email em Publicar em que nid = 1


'' '

 


# #################### Com base no queryyset e na __query (consulta de associação) ################## ##########

# Consulta direta: consulta reversa por campo: nome da tabela em minúsculas


# Consulte a caixa de correio do editor do python neste livro
# ret = models.Book.objects.filter (title = "python"). Valores ("publish__email")
# print (ret.query)

'' '
selecione publish.email do livro
deixado participar Publish on book.publish_id = publish.nid
where book.title = "python"
' ''

# Apple Press Publishing Nome do livro
# Método 1:
ret1 = models.Publish.objects.filter (name = "Apple Press"). Valores ("book__title")
print ("111111111 ====>", ret1. consulta) # Método
2:
ret2 = models.Book.objects.filter (publish__name = "Apple Press"). values ​​("title")
print ("2222222222 ====>", ret2.query)

#Query alex 的 手机 号
# Método 1:
ret = models.Author.objects.filter (name = "alex"). Valores ("authorDetail__telephone")

#
方式2: models.AuthorDetail.objects.filter (author__name = "alex"). Values ​​("telephone")

# Consultar o nome do livro publicado pelo autor cujo número de telefone celular começa com 151 e o nome do editor correspondente ao livro

ret = models.Book.objects.filter (author__authorDetail__telephone__startswith = "151"). values ​​('title', "publish__name")
print (ret.query)


retornar HttpResponse ("OK")

Acho que você gosta

Origin www.cnblogs.com/w770762632/p/12703731.html
Recomendado
Clasificación