Stumbled upon something very weird today.
I created a minimal project/application that can show the issue. This is how I did it:
virtualenv venv
. ./ven/bin/activate
pip install django==1.6 # That's the one we're using
django-admin.py startproject bla
cd bla
chmod +x manage.py
./manage.py startapp bla_app
in bla/settings.py
:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'bla_app',
)
AUTH_USER_MODEL = 'bla_app.MyUser'
in bla_app/models.py
:
from django.db import models
from django.contrib.auth.models import AbstractUser
# Create your models here.
class MyUser(AbstractUser):
super_name = models.CharField(max_length=254, unique=True)
Then, I run the syncdb
command:
./manage.py syncdb
And it's been created as expected.
Now comes the tricky part. If I replace the models.py with a folder called models, and create an __init__.py
file containing:
from my_user import MyUser
(the previous models.py
was moved into models/
as my_user.py
)
I then get these errors:
$ ./manage.py syncdb
CommandError: One or more models did not validate:
admin.logentry: 'user' has a relation with model bla_app.MyUser, which has either not been installed or is abstract.
auth.user: Model has been swapped out for 'bla_app.MyUser' which has not been installed or is abstract.
Do you have an idea of what is going on here?
I found that, but I'm not sure they're related