2015-03-22 8 views
13

Uso AbstractBaseUser per i miei modelli utente in vari progetti. L'aggiornamento a Django 1.8 RC1 funziona perfettamente e posso eseguire il comando di gestione della migrazione. Tuttavia, quando si cerca di creare un layout tabella di database fresca da zero, ottengo il seguente errore:Django 1.8 RC1: ProgrammingError durante la creazione di tabelle di database

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

Tutto funziona perfettamente con Django 1.7.x e non riesco a trovare nulla su questo problema altrove. Quindi, è un grande con la versione RC1 o ha fatto qualcosa di cui non sono a conoscenza in Django 1.8? Sfortunatamente, il messaggio di errore non aiuta molto ... ma sono abbastanza sicuro che abbia a che fare con le migrazioni automatiche che vengono fornite con la nuova versione di Django.

+0

Creato un ticket sul tracker dei bug di Django: https://code.djangoproject.com/ticket/24524 –

+0

Ho lo stesso identico problema! Qualche fortuna? – ydaniv

+0

Sì, ho completamente dimenticato di postare una risposta qui ... solo un secondo. –

risposta

15

Per copiare la risposta che ho ricevuto dal ticket Django di cui sopra: Prima di chiamare "python manage.py migrare" per creare il layout del database, si ha la necessità di creare una migrazione per l'applicazione che contiene la classe utente personalizzata:

python manage.py makemigrations appname 

Questo crea un file di migrazione all'interno della directory dell'app - et voilà, la migrazione funziona e crea le altre tabelle.

+0

Nel mio caso non sembra funzionare per i test - ancora fallendo. I tuoi test hanno funzionato bene dopo l'interruttore? – mallyvai

+0

Non ho provato alcun test, ma dovrebbero funzionare. Altrimenti potresti prendere in considerazione la creazione di un baco sul sito di Django. –

6

sto usando:

./manage.py makemigrations 

poi

./manage.py migrate auth 

e poi

./manage.py migrate 
+0

ottima soluzione! – lollercoaster

+0

Ha funzionato, grazie, Sai perché? – binithb

0

ho dovuto affrontare un problema molto simile, lamentando relation "auth_group" does not exist comunque con Django 1.10.

Il python manage.py makemigrations appname non mi è stato d'aiuto.

Anche il python manage.py showmigrations non funzionava, entrambi hanno generato lo stesso errore.

Dopo aver esaminato il traceback in dettaglio, ho scoperto, che in una delle mie opinioni basate sulle classi stavo definendo la variabile queryset classe nel seguente modo:

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

Dopo aver modificato questo per sovrascrivere il get_queryset funzione intead, funzionava correttamente.

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

come influisce "queryset"? – Sean

0

ho affrontato quasi lo stesso problema con Django 1.8, risolto solo eseguendo manage.py makemigrations app_name per l'applicazione con il modello utente personalizzata (+ leggere sotto)

esempio:

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


class User(AbstractUser): 
    pass 

E PER OGNI app che conteneva ForeignKey, OneToOneField riferimenti ad esso, ad esempio:

# 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) 

poi manage.py migrate lavorato senza errori

lo stesso approccio funziona per qualsiasi applicazione che contiene le estensioni di django.contrib modelli, per esempio FlatPages ecc ...

Problemi correlati