Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

357
Views
MakeMigration Error on Django - ImportError: cannot import name 'FieldDoesNotExist' from 'django.db.models'

I got the following error after adding a new model field and running the makemigrations command:

ImportError: cannot import name 'FieldDoesNotExist' from 'django.db.models' (/usr/local/lib/python3.7/site-packages/django/db/models/init.py)

this is what my models.py looks like:

import uuid
from django.contrib.auth import get_user_model
from django.db import models
from django.urls import reverse

# Create your models here.
class Book(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    title = models.CharField(max_length=200)
    author = models.CharField(max_length=200)
    price = models.DecimalField(max_digits=6, decimal_places=2)
    cover = models.ImageField(upload_to='covers/', blank=True) # New Field

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('book_detail', args=[str(self.id)])

class Review(models.Model):
    book = models.ForeignKey(Book, on_delete=models.CASCADE, related_name='reviews')
    review = models.CharField(max_length=255)
    author = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)

    def __str__(self):
        return self.review

This is the current state of my migrations files, I have two. 0001_initial.py

# Generated by Django 3.0.8 on 2020-08-01 13:11

from django.db import migrations, models
import uuid


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Book',
            fields=[
                ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                ('title', models.CharField(max_length=200)),
                ('author', models.CharField(max_length=200)),
                ('price', models.DecimalField(decimal_places=2, max_digits=6)),
            ],
        ),
    ]

0002_review.py

# Generated by Django 3.0.8 on 2020-08-06 11:21

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


class Migration(migrations.Migration):

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
        ('books', '0001_initial'),
    ]

    operations = [
        migrations.CreateModel(
            name='Review',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('review', models.CharField(max_length=255)),
                ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
                ('book', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reviews', to='books.Book')),
            ],
        ),
    ]

This is the exception traceback after running makemigration command:

Exception in thread django-main-thread:
web_1  | Traceback (most recent call last):
web_1  |   File "/usr/local/lib/python3.7/threading.py", line 926, in _bootstrap_inner
web_1  |     self.run()
web_1  |   File "/usr/local/lib/python3.7/threading.py", line 870, in run
web_1  |     self._target(*self._args, **self._kwargs)
web_1  |   File "/usr/local/lib/python3.7/site-packages/django/utils/autoreload.py", line 53, in wrapper
web_1  |     fn(*args, **kwargs)
web_1  |   File "/usr/local/lib/python3.7/site-packages/django/core/management/commands/runserver.py", line 110, in inner_run
web_1  |     autoreload.raise_last_exception()
web_1  |   File "/usr/local/lib/python3.7/site-packages/django/utils/autoreload.py", line 76, in raise_last_exception
web_1  |     raise _exception[1]
web_1  |   File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py", line 357, in execute
web_1  |     autoreload.check_errors(django.setup)()
web_1  |   File "/usr/local/lib/python3.7/site-packages/django/utils/autoreload.py", line 53, in wrapper
web_1  |     fn(*args, **kwargs)
web_1  |   File "/usr/local/lib/python3.7/site-packages/django/__init__.py", line 24, in setup
web_1  |     apps.populate(settings.INSTALLED_APPS)
web_1  |   File "/usr/local/lib/python3.7/site-packages/django/apps/registry.py", line 114, in populate
web_1  |     app_config.import_models()
web_1  |   File "/usr/local/lib/python3.7/site-packages/django/apps/config.py", line 211, in import_models
web_1  |     self.models_module = import_module(models_module_name)
web_1  |   File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module
web_1  |     return _bootstrap._gcd_import(name[level:], package, level)
web_1  |   File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
web_1  |   File "<frozen importlib._bootstrap>", line 983, in _find_and_load
web_1  |   File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
web_1  |   File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
web_1  |   File "<frozen importlib._bootstrap_external>", line 728, in exec_module
web_1  |   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
web_1  |   File "/usr/local/lib/python3.7/site-packages/allauth/account/models.py", line 14, in <module>
web_1  |     from .adapter import get_adapter
web_1  |   File "/usr/local/lib/python3.7/site-packages/allauth/account/adapter.py", line 31, in <module>
web_1  |     from ..utils import (
web_1  |   File "/usr/local/lib/python3.7/site-packages/allauth/utils.py", line 15, in <module>
web_1  |     from django.db.models import FieldDoesNotExist, FileField
web_1  | ImportError: cannot import name 'FieldDoesNotExist' from 'django.db.models' (/usr/local/lib/python3.7/site-packages/django/db/models/__init__.py)

So, I do not know what exactly caused this error and am stuck at this stage. Any help would be greatly appreciated.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Your version of django-allauth has the incorrect import for FieldDoesNotExist. The correct import is:

from django.core.exceptions import FieldDoesNotExist

The import from django.db.models presumably worked in older versions of Django.

The import was fixed in django-allauth in version 0.41.0. If you update django-allauth in your requirements.txt or pipenv it should fix the problem.

over 4 years ago · Santiago Trujillo Report

0

In my case, Django version 3.1.3 conflicted with django-filter 2.0.0.

Similar error message. But the last lines of error said that it was graphene-django. However, in the middle, it says django-filter. When I looked into the django-filter source file, there was a wrong import of FieldDoesNotExist. When I upgrade django-filter to version 2.4.0, problem solved.

over 4 years ago · Santiago Trujillo Report

0

In OP's case it was django-allauth, in my case django-filter.

Check the last line in error log that shows the file in which from django.db.models import FieldDoesNotExist, FileField is imported and try upgrading that package.

In OP's case the error log line was this:

File "/usr/local/lib/python3.7/site-packages/allauth/utils.py"...

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!