0

UPDATE: The issue seems to be as simple as Django can't find my app, as trying to run app.get_app_config('mainpage') returns:

No installed app with label 'mainpage'.

UPDATE 2: I have done some investigating, and apps.get_models() is returning entirely empty! This is another symptom of the same problem, and makes me wonder why Django isn't finding anything at all.

However, the rest of the issue remains the same. I see no reason why the app shouldn't be recognized.

I've been experiencing the above error in Django. Before you yell at me, I have extensively read through this post on the same error.. However, None of the solutions provided there have helped resolve this.

Essentially, I'm trying to create an instance of each of my models so that I can populate my web-page. However, I can't even run my models.py without the above error, which looks like this:

from django.db import models


class HomePage(models.Model):
    name = models.CharField(max_length=200)

    def __str__(self):
        return self.name

class Section(models.Model):
    name = models.CharField(max_length=200)
    home_page = models.ForeignKey('mainpage.HomePage', on_delete=models.CASCADE)

    def __str__(self):
        return self.name

class NavBar(Section):
    logo = models.ImageField()

class Entry(models.Model):
    primary = models.BooleanField()
    text = models.CharField(max_length=15)

class Landing(Section):
    tagline = models.TextField()
    button_text = models.CharField(max_length=25)

class About(Section):
    title = models.CharField(max_length=200)

class Blurb(models.Model):
    "Blurb for an about section"
    title = models.CharField(max_length=200)
    body = models.TextField()
    section = models.ForeignKey('mainpage.About', on_delete=models.CASCADE)

class Capabilities(Section):
    title = models.CharField(max_length=200)
    description = models.TextField()
    button_text = models.CharField(max_length=40)

class Capability(models.Model):
    """Capability entry"""
    image = models.ImageField()
    description = models.TextField()
    section = models.ForeignKey('mainpage.Capabilities', on_delete=models.CASCADE)


class Testimonials(Section):
    title = models.CharField(max_length=200)

class Testimonial(models.Model):
    """Testimonial card"""
    name = models.CharField(max_length=200)
    role = models.CharField(max_length=200)
    description = models.TextField()

class Contact(Section):
    logo = models.ImageField()
    description = models.TextField()
    address = models.ForeignKey('mainpage.Address', on_delete=models.CASCADE)
    info = models.ForeignKey('mainpage.ContactInfo', on_delete=models.CASCADE)

class Address(models.Model):
    title = models.CharField(max_length=100)
    street_address = models.CharField(max_length=200)
    city = models.CharField(max_length=200)
    state = models.CharField(max_length=2)
    zip_code = models.IntegerField()

class ContactInfo(models.Model):
    title = models.CharField(max_length=100)
    phone = models.IntegerField()
    email = models.EmailField

class IconLink(models.Model):
    icon = models.CharField(max_length=50)
    link = models.TextField()
    contact_section = models.ForeignKey('mainpage.Contact', on_delete=models.CASCADE)

My installed apps seems fine:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'mainpage', # needs to be under contentypes (foreign key)
    'blog',
]

As does my app configuration:

from django.apps import AppConfig


class MainpageConfig(AppConfig):
    name = 'mainpage'
    verbose_name = 'Main Page'

So I'm really at a loss. This is all very sad, I get the same error trying to import models into another file:

import os, sys
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'gainsite.settings')
import django
from django.conf import settings
try:
    settings.configure()
except Exception as e:
    print(e)
django.setup()
from mainpage.models import Blurb

print(Blurb().__dict__)

I am fairly sure that Django is not resolving the paths to my models properly, but I am a beginner and really don't know enough to investigate further. I checked out the migrations for adding these models, and it seems hunky dory:

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Address',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=100)),
                ('street_address', models.CharField(max_length=200)),
                ('city', models.CharField(max_length=200)),
                ('state', models.CharField(max_length=2)),
                ('zip_code', models.IntegerField()),
            ],
        ),
        migrations.CreateModel(
            name='Blurb',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=200)),
                ('body', models.TextField()),
            ],
        ),
        migrations.CreateModel(
            name='Capability',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('image', models.ImageField(upload_to='')),
                ('description', models.TextField()),
            ],
        ),
        migrations.CreateModel(
            name='ContactInfo',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=100)),
                ('phone', models.IntegerField()),
            ],
        ),
        migrations.CreateModel(
            name='Entry',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('primary', models.BooleanField()),
                ('text', models.CharField(max_length=15)),
            ],
        ),
        migrations.CreateModel(
            name='HomePage',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=200)),
            ],
        ),
        migrations.CreateModel(
            name='IconLink',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('icon', models.CharField(max_length=50)),
                ('link', models.TextField()),
            ],
        ),
        migrations.CreateModel(
            name='Section',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=200)),
            ],
        ),
        migrations.CreateModel(
            name='Testimonial',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=200)),
                ('role', models.CharField(max_length=200)),
                ('description', models.TextField()),
            ],
        ),
        migrations.CreateModel(
            name='About',
            fields=[
                ('section_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='mainpage.Section')),
                ('title', models.CharField(max_length=200)),
            ],
            bases=('mainpage.section',),
        ),
        migrations.CreateModel(
            name='Capabilities',
            fields=[
                ('section_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='mainpage.Section')),
                ('title', models.CharField(max_length=200)),
                ('description', models.TextField()),
                ('button_text', models.CharField(max_length=40)),
            ],
            bases=('mainpage.section',),
        ),
        migrations.CreateModel(
            name='Contact',
            fields=[
                ('section_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='mainpage.Section')),
                ('logo', models.ImageField(upload_to='')),
                ('description', models.TextField()),
                ('address', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='mainpage.Address')),
                ('info', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='mainpage.ContactInfo')),
            ],
            bases=('mainpage.section',),
        ),
        migrations.CreateModel(
            name='Landing',
            fields=[
                ('section_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='mainpage.Section')),
                ('tagline', models.TextField()),
                ('button_text', models.CharField(max_length=25)),
            ],
            bases=('mainpage.section',),
        ),
        migrations.CreateModel(
            name='NavBar',
            fields=[
                ('section_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='mainpage.Section')),
                ('logo', models.ImageField(upload_to='')),
            ],
            bases=('mainpage.section',),
        ),
        migrations.CreateModel(
            name='Testimonials',
            fields=[
                ('section_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='mainpage.Section')),
                ('title', models.CharField(max_length=200)),
            ],
            bases=('mainpage.section',),
        ),
        migrations.AddField(
            model_name='section',
            name='home_page',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='mainpage.HomePage'),
        ),
        migrations.AddField(
            model_name='iconlink',
            name='contact_section',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='mainpage.Contact'),
        ),
        migrations.AddField(
            model_name='capability',
            name='section',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='mainpage.Capabilities'),
        ),
        migrations.AddField(
            model_name='blurb',
            name='section',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='mainpage.About'),
        ),
    ]

What do you guys think? I've been stuck on this for hours which is very frustrating.

Danny
  • 354
  • 3
  • 13
  • try to change `mainpage` to `mainpage.apps.MainpageConfig` in `INSTALLED_APPS` – JPG Oct 12 '18 at 05:02
  • Either add mainpage.apps.MainpageConfig in INSTALLED_APPS or make sure you have `default_app_config = 'mainpage.apps.MainpageConfig' ` in _init.py_ and add 'mainpage' in Installed apps, checkout https://docs.djangoproject.com/en/2.1/ref/applications/ – Bidhan Majhi Oct 12 '18 at 05:46
  • Hey man! I'd already set the default_app_config. The problem was that I wasn't running in the Django shell, just a regular python one. This was making things all king of screwy. Once I ran in the Django shell, everything was as it should be. – Danny Oct 12 '18 at 17:49

0 Answers0