Fiz todo o procedimento como no videos para excluir o app 'pessoas' mas dai dá este erro:
RuntimeError: Model class pessoas.models.Pessoa doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
Fiz todo o procedimento como no videos para excluir o app 'pessoas' mas dai dá este erro:
RuntimeError: Model class pessoas.models.Pessoa doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
Algum poderia me dar uma ajuda?
Oiii Igor, como você está? Espero que esteja bem ^-^
Peço perdão pela demora em obter um retorno.
Compartilha o código de como está a sua lista de INSTALLED_APPS
no arquivo settings.py
da pasta alurareceita
.
Verifica também se em algum momento no seu código você ainda importa o app de pessoas, se sim, exclua a importação.
Fico no aguardo para poder te ajudar, tá bom?
Aqui deu esse erro também. Resolvi criando uma meta classe com o nome da app nos models.py:
class Meta:
app_label = 'pessoas'
Segue o código:
# Application definition
INSTALLED_APPS = [
'receitas',
'usuarios',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
###########################
#pessoas/admin.py
from django.contrib import admin
from .models import Pessoa
class ListandoPesoas(admin.ModelAdmin):
list_display = ('id', 'nome', 'email')
list_display_links = ('id', 'nome')
search_fields = ('nome',)
list_per_page = (2)
admin.site.register(Pessoa, ListandoPesoas)
#################################
#pessoas/apps.py
from django.apps import AppConfig
class PessoasConfig(AppConfig):
name = 'pessoas'
#########################
#pessoas/models.py
from django.db import models
class Pessoa(models.Model):
nome = models.CharField(max_length=200)
email = models.CharField(max_length=200)
def __str__(self):
return self.nome
Igor, analisei os trechos que compartilhou e aparentemente está correto. Tente a sugestão que a Renata sugeriu, adicionar o app_label
em seu modelo, como mostro abaixo:
from django.db import models
class Pessoa(models.Model):
nome = models.CharField(max_length=200)
email = models.CharField(max_length=200)
def __str__(self):
return self.nome
class Meta:
app_label = 'pessoas'
Caso ainda não resolva, peço por gentileza que upe seu projeto no drive ou github e coloque o link na resposta para que eu possa fazer os testes por aqui.
Fico no aguardo.
Boa tarde Nádia infelizmente não consegui segue o link do projeto desde de já agradeço pela ajuda:
https://drive.google.com/drive/folders/12Hk2kPPUg35MFMmXoovDLRfPNh4yd_mM?usp=sharing
Igor, vou baixar seu projeto e efetuar os testes. Te retorno o mais breve possível =)
"Pessoas" isn't in an application in INSTALLED_APPS.
Tem que colocar "pessoas" lá no INSTALLED_APPS do settings.py, como você fez com receitas e usuários.
Renata, isso resolve, mas nessa aula em específico o app Pessoas
sai dos INSTALLED_APPS pois ele é deletado.
Igor, executei o seu código e o terminal apresentou o seguinte erro:
django.db.migrations.exceptions.NodeNotFoundError: Migration receitas.0006_auto_20200930_0957 dependencies reference nonexistent parent node ('pessoas', '0001_initial')
Isso está acontecendo porque no app de receitas ainda tem uma migração que depende do app de pessoas, a migração 006 que está localizada na pasta migrations
dentro do app de receitas
, veja:
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('pessoas', '0001_initial'),
('receitas', '0005_auto_20200930_0939'),
]
operations = [
migrations.AlterField(
model_name='receita',
name='pessoa',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pessoas.pessoa'),
),
]
Precisamos excluir a ligação dessa migração com o app de pessoas. E para isso, iremos excluir a linha da tupla que se refere ao app de pessoas e após isso, substituir o field
para usar a autenticação de usuário do Django e não mais a de pessoas. Fica da seguinte forma:
from django.db import migrations, models
import django.db.models.deletion
from django.conf import settings
class Migration(migrations.Migration):
dependencies = [
('receitas', '0005_auto_20200930_0939'),
]
operations = [
migrations.AlterField(
model_name='receita',
name='pessoa',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
),
]
Tente fazer essa alteração e me diga se obteve êxito.
Fico no aguardo.
Ae deu certo valeu Nádia você é a melhor!