Skip to content

Instantly share code, notes, and snippets.

@CoutinhoElias
Created May 1, 2021 18:35
Show Gist options
  • Save CoutinhoElias/49a6c24476f1e55d2e182384a935781a to your computer and use it in GitHub Desktop.
Save CoutinhoElias/49a6c24476f1e55d2e182384a935781a to your computer and use it in GitHub Desktop.
Join with peewee
#Minhas tabelas relacionadas:
class Produto(BaseModel):
cdchamada = CharField(null=True, unique=True)
dsdescricaoecommerce = TextField(null=True)
dsobservacao = TextField(null=True)
idproduto = CharField(primary_key=True, null=False)
nmproduto = CharField(index=True, null=True)
stativo = CharField(null=True)
class Meta:
table_name = 'produto'
#CompositeKey('dscodigo', 'tpcodigo')
class Codigos(BaseModel):
dscodigo = CharField()
iddetalhe = CharField(null=True)
#idproduto = CharField()
idproduto = ForeignKeyField(Produto.idproduto, backref='codigos')
tpcodigo = CharField()
class Meta:
table_name = 'codigos'
# Minha consulta:
'''No modo SQL funciona'''
""" SELECT *
FROM produto
INNER JOIN codigos
ON produto.idproduto_id = codigos.idproduto
ORDER by produto.nmproduto;
"""
'''Com peewee retorna o erro abaixo da consulta:'''
grupo = Produto.select().join(Codigos).where(Codigos.idproduto_id == Produto.idproduto)
# O retorno:
'''
ValueError('Unable to find foreign key between %s and %s. '
ValueError: Unable to find foreign key between <Model: Produto> and <Model: Codigos>. Please specify an explicit join condition.
'''
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment