2015-03-22 2 views
13

Я использую AbstractBaseUser для моделей пользователей в различных проектах. Обновление Django 1.8 RC1 работает плавно, и я могу запустить команду управления миграцией. Тем не менее, при попытке создать новый макет таблицы базы данных с нуля, я получаю следующее сообщение об ошибке:Django 1.8 RC1: ProgrammingError при создании таблиц базы данных

python manage.py migrate 
>>> ... 
>>> ... 
>>> django.db.utils.ProgrammingError: relation "auth_group" does not exist 

Все отлично работает с Django 1.7.x и я не могу найти ничего об этом вопросе в другом месте. Итак, это большая версия RC1 или что-то изменилось, что я не знаю в Django 1.8? К сожалению, сообщение об ошибке действительно не помогает ... но я уверен, что это связано с автоматическими переходами, которые поставляются с новой версией Django.

+0

Создал билет на Django Bug Tracker: https://code.djangoproject.com/ticket/24524 –

+0

Я получаю то же самое! При удаче? – ydaniv

+0

Да, полностью забыл написать ответ здесь ... всего в секунду. –

ответ

15

Чтобы скопировать ответ, который я получил от билета Джанго упоминалось выше: Перед вызовом «питон manage.py мигрировать», чтобы создать макет базы данных, необходимо создать миграцию для приложения, которое содержит пользовательский класс пользователей:

python manage.py makemigrations appname 

Это создает файл миграции в каталоге приложения - et voilà, migrate работает и создает другие таблицы.

+0

В моем случае это не работает для тестов - все еще не удается. Сработали ли ваши тесты после переключения? – mallyvai

+0

Я не пробовал никаких тестов, но они должны работать. В противном случае вы можете подумать о создании билета на сайте Django. –

6

Я использую:

./manage.py makemigrations 

затем

./manage.py migrate auth 

, а затем

./manage.py migrate 
+0

отличное решение! – lollercoaster

+0

Это сработало, спасибо, вы знаете, почему так? – binithb

0

я столкнулся с очень похожий вопрос, жалуясь relation "auth_group" does not exist однако с Django 1.10.

python manage.py makemigrations appname не помог мне.

Даже python manage.py showmigrations не работает, оба они подняли ту же ошибку.

После изучения отслеживающего подробно, я обнаружил, что в одном из моих взглядов на основе классов я задающий переменную queryset класса следующим образом:

Class SomeClassBasedView(ListView): 
    queryset = User.objects.filter(groups=Group.objects.get(name='Tester')) 

После изменения этого переопределить get_queryset функция работает, она работает правильно.

Class SomeClassBasedView(ListView): 
    def get_queryset(self): 
     return User.objects.filter(groups=Group.objects.get(name='Tester')) 
+0

Как влияет «запрос»? – Sean

0

Я сталкивался почти такая же проблема с Django 1.8, решить ее только запустив manage.py makemigrations app_name для приложения с пользовательской модели User (+ читайте ниже)

например:

# some_app/models.py: 
from django.contrib.auth.models import AbstractUser 


class User(AbstractUser): 
    pass 

И ДЛЯ КАЖДОГО приложение, содержащее ForeignKey, OneToOneField и т. Д. Ссылки на него, например:

# another_app/models.py: 
from django.conf import settings 
from django.db import models 


class Profile(models.Model): 
    user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) 

manage.py migrate затем работал без ошибок

тот же подход работает для любого приложения, содержащего расширения для django.contrib моделей, например, FlatPages и т. Д. ...

Смежные вопросы