Por Luferat em 04/11/2026
Vamos criar alguns dados "fake" em "POSTS" para que possamos fazer os primeiros testes e ainda aproveitar para aprender como se cria um comando manage.py. Por exemplo, vamos criar o comando python manage.py populatepost ou, no nosso projeto, run populatepost.
Antes, precisamos de alguns usuários para serem "proprietários" destes posts. Vamos criar primeiro o "administrador" do site. No terminal do VSCode, comande:
run createsuperuser
Preencha os campos com atenção:
Username: → O "username" do administrador. Evite espaços e acentos...
Email address: → O e-mail do administrador. Use um e-mail "real"...
Password: → A senha. Letras minúsculas, maiúsculas, números e símbolos...
Password (again): → Exatamente a mesma senha acima...
Não aparece nada quando digita a senha. É assim mesmo!
Nunca esqueça essa senha. Anote-a agora mesmo!
Já esqueceu a senha!?
Agora, temos acesso ao "Django Admin". Ainda no terminal, rode o servidor:
run
No navegador, acesse http://localhost:8000/admin e logue-se.
Crie mais alguns usuários clicando em +Add ao lado de "Users". Preencha os dados (Username, Password e Password confirmation), clique em SAVE e repita o processo pelo menos mais uma vez.
Por hora, só cadastre "username" e "password". Os outros campos podemos editar depois...
Vamos criar um comando personalizado do Django, usando o mecanismo de Management Commands. É uma ótima oportunidade para conhecer um recurso nativo do Django que permite criar comandos próprios, executados diretamente pelo terminal, como python manage.py populate.
Dentro do aplicativo blog, crie a seguinte estrutura, com atenção:
blog/ ← Pasta do aplicativo
├── management/ ← Crie essa pasta
│ ├── __init__.py ← Crie o arquivo de inicialização. Fica vazio
│ └── commands/ ← Crie a pasta onde criamos o comando
│ ├── __init__.py ← Crie o arquivo de inicialização. Fica vazio
│ └── populate.py ← Crie o arquivo do comando
├── migrations/ ← Daqui em diante, já existe. Não altere!
├── models.py
├── views.py
└── ...
O Django identifica os comandos personalizados dentro da pasta blog/management/commands/.
Agora vamos implementar a lógica. Abra blog/management/commands/populate.py e crie o conteúdo:
Mantenha Ctrl pressionada ao clicar no link.
No código, clique em Raw para facilitar "copiar e colar".
from django.core.management.base import BaseCommand
É a classe que permite criar comandos personalizados do Django;
class Command(BaseCommand):
Nossa classe Command herda BaseCommand;
def handle(self, *args, **options):
É o método executado quando chamamos nosso comando pelo terminal;
if Post.objects.exists():
Verifica se existe pelo menos um registro na tabela. Se existir, exibimos uma mensagem e encerramos a execução com return;
User = get_user_model()
Recupera o modelo de usuário configurado no Django;
users = list(User.objects.all())
Recupera todos os usuários cadastrados;
user_id=random.choice(users)
Escolhe um elemento aleatório da lista para ser "dono" da postagem;
Post.objects.create(...)
É o ORM do Django criando diretamente um registro na tabela, sem precisar escrever SQL.
Mantenha Ctrl pressionada e clique em "Criando um comando manage.py".
No terminal, com o servidor parado, comande:
python manage.py populate
Ou, para os íntimos!
run populate
O resultado será algo como:
Se obteve sucesso, no VSCode, clique no db.sqlite3 e veja se a tabela blog_post tem novos conteúdos...