Dica 19.1 - Modelagem - OneToMany - Um pra Muitos - ForeignKey - Chave Estrangeira

Leia

ORM - Object Relational Mapping

Rodando comandos direto no PostgreSQL.

docker-compose up -d

docker container exec -it dicas_de_django_db psql

\l  # lista os bancos
\c dicas_de_django_db  # conecta em dicas_de_django_db
\dt  # lista as tabelas

SELECT first_name, last_name, email FROM accounts_user;
SELECT * FROM accounts_user;

\q  # sair

Rodando comandos pelo Django

Dentro do container

Caso dê erro no container faça

Fora do container

Fazendo mais algumas queries.

E agora vamos aplicar um filtro.

Leia QuerySet API reference #icontains.

Criando uma nova app

Vamos criar uma nova app chamada bookstore.

Adicione em INSTALLED_APPS

Edite urls.py

Edite bookstore/apps.py

Crie bookstore/urls.py

OneToMany - Um pra Muitos - ForeignKey - Chave Estrangeira

É o relacionamento onde usamos chave estrangeira, conhecido como ForeignKey.

01_fk.png

Ilustração feita com excalidraw.com.

Um cliente pode fazer vários pedidos, então para reproduzir o esquema acima, usamos o seguinte código:

Diagrama ER

Inserindo dados com django-seed

Edite settings.py

Gerando os dados

ORM

PostgreSQL e pgAdmin no Docker

Vamos usar o PostgreSQL rodando no Docker.

Podemos ver tudo pelo pgAdmin, ou

As tabelas

Os registros

Schema

DBeaver e CloudBeaver

CloudBeaver

https://github.com/dbeaver/cloudbeaver/wiki/Run-Docker-Container

https://cloudbeaver.io/doc/cloudbeaver.pdf

Edite o docker-compose.yml

E rode

Entre no Portainer e entre no CloudBeaver.

Login e senha

Conexão com dicas_de_django_db.

pgAdmin 4

DBeaver

Jupyter Notebook

Para instalar o Jupyter digite

E para rodar digite

Quando você tentar rodar

Você vai ter este erro

Então edite o settings.py

Mas o código completo deve ser

Ou seja, a partir da ordem de compra conseguimos ver o cliente.

E como fazemos para a partir do cliente, ver as ordens de compra dele?

Ou seja, pegamos os dados pelo related_name.

Last updated

Was this helpful?