es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El campo fue declarado con una referencia demorada a ‘auth.user’, pero la aplicación ‘auth’ no está instalada.

Mis aplicaciones instaladas son:

INSTALLED_APPS = [
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
‘django.contrib.sites’,
‘leadgenerator’,
‘leadgenerator.apps.ui’,
‘leadgenerator.apps.accounts’,
‘leadgenerator.apps.instagram’,
‘leadgenerator.apps.BorseBots’,
‘leadgenerator.apps.TelegramBorse’,
‘leadgenerator.apps.Utils’,
‘leadgenerator.apps.Blog’,
‘leadgenerator.apps.Crypto’,
‘channels’,
‘multiselectfield’,
‘django_redis’,
‘django_filters’,
‘extra_views’,
‘django_select2’,
‘compressor’,
‘django_celery_beat’,
‘crispy_forms’,
‘django_tables2’,
‘ckeditor’,
‘ckeditor_uploader’,

‘leadgenerator.ckeditor5’,

‘leadgenerator.rolepermissions’,
‘rolepermissions’,

login and login_as

‘loginas’,
‘allauth’,
‘allauth.account’,
‘allauth.socialaccount’,
‘phonenumber_field’,

blog

‘modelcluster’,
‘taggit’,

end blog

‘imagekit’,
‘pwa’
]

He usado “user” en los modelos:

from django.contrib.auth.models import User as djangoUser
class BlogPost(models.Model):
author = models.ForeignKey(djangoUser, on_delete=models.CASCADE, related_name=’blog_posts’, verbose_name=_(‘Author’))

La migración ahora es 0013.

Cuando utilizo la migración inversa de esta manera:

migrate Blog 0011

Ocurre un error:

ValueError: El campo Blog.BlogPost.author fue declarado con una referencia tardía a ‘auth.user’, pero la aplicación ‘auth’ no está instalada.

Tampoco tengo AUTH_USER_MODEL en settings.py.

Además, no puedo eliminar la base de datos porque contiene muchos datos.

¿Cuál es el problema?

Usando Django 2.2 Python 3.7 PostgreSQL.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema es que has utilizado django.contrib.auth.models.User como clave externa para el campo author en tu modelo BlogPost, pero la aplicación auth no está incluida en INSTALLED_APPS. Por lo tanto, cuando intentas migrar a una versión anterior de la aplicación donde se definió este campo, Django no puede encontrar la aplicación auth y genera el ValueError que has mencionado.

    Para solucionar esto, puedes agregar 'django.contrib.auth' a la lista INSTALLED_APPS en settings.py. Alternativamente, puedes cambiar el campo de clave externa para usar el modelo personalizado de usuario definido en tu aplicación (si tienes uno) configurando AUTH_USER_MODEL en settings.py y utilizándolo en tus modelos. Sin embargo, ten en cuenta que cambiar el modelo de usuario puede ser una operación compleja y puede requerir una migración de datos.

    Si no puedes eliminar la base de datos y tienes demasiados datos en ella, puedes intentar hacer una copia de seguridad de la base de datos y probar los cambios en un entorno de desarrollo separado antes de aplicarlos a la base de datos de producción.

Comments are closed.