Solucionado (ver solução)
Solucionado
(ver solução)
11
respostas

Deletando app

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.

11 respostas

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.

solução!

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!