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

594
Views
Django ImportError: no se puede importar el nombre 'ReporterProfile' del módulo parcialmente inicializado 'accounts.models' (probablemente debido a una importación circular)

Tengo dos aplicaciones llamadas collection , accounts . Ambas aplicaciones tienen modelos definidos. Estoy importando un ReporterProfile modelo de la aplicación de accounts a collection . Del mismo modo, un Report modelo de la collection de aplicaciones a las accounts .

El modelo de Report de la aplicación de collection se llama en un método de clase de modelo en la aplicación de accounts como esta:

 from collection.models import Report class ReporterProfile(models.Model): .... def published_articles_number(self): num = Report.objects.filter(reporterprofile=self.id).count() return num

Del mismo modo, estoy importando los modelos ReporterProfile y User de la aplicación de accounts al modelo de aplicación de collection de esta manera:

 from accounts.models import ReporterProfile, User from <project_name> import settings class Report(models.Model): reporterprofile = models.ForeignKey(ReporterProfile, on_delete=models.CASCADE, verbose_name="Report Author") ... class Comment(models.Model): report = models.ForeignKey(Report, on_delete=models.CASCADE, related_name='comments') user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, verbose_name="Comment by") ...

Al ejecutar el servidor o realizar migraciones, aparece el error:

Archivo "F:\project_name\accounts\models.py", línea 8, en from collection.models import Report

Archivo "F:\nombre_del_proyecto\colección\modelos.py", línea 2, desde cuentas.modelos import ReporterProfile, Usuario

ImportError: no se puede importar el nombre 'ReporterProfile' del módulo parcialmente inicializado 'accounts.models' (probablemente debido a una importación circular) (F:\project_name\accounts\models.py)

Creo que el error se debe a un patrón de importación incorrecto. ¿Qué tengo que hacer?

over 4 years ago · Santiago Trujillo
4 answers
Answer question

0

Para ForeignKey :

En lugar de usar reporterprofile = models.ForeignKey(ReporterProfile, ...) , puede usar reporterprofile = models.ForeignKey("accounts.ReporterProfile", ...) , para que no tenga que importar el modelo.

Para evitar el error de importación de circulor:

En lugar de usar :

 from accounts.models import ReporterProfile [...] foo = ReporterProfile()

Puedes usar:

 import accounts.models [...] foo = accounts.models.ReporterProfile()
over 4 years ago · Santiago Trujillo Report

0

Asegúrese de que está escribiendo los modelos de creación nane porque tengo el mismo problema y cuando eche un vistazo a mi importación, escribí userFormdata en lugar de userformData (escribí en mayúscula la 'f')

 #wrong inport from users_handler.models import userFormData #Correct import from users_handler.models import userformData
over 4 years ago · Santiago Trujillo Report

0

importar los modelos como a continuación

 import collection class ReporterProfile(models.Model): .... def published_articles_number(self): num = collection.models.Report.objects.filter(reporterprofile=self.id).count() return num

similar

 import accounts from <project_name> import settings class Report(models.Model): reporterprofile = models.ForeignKey(accounts.models.ReporterProfile, on_delete=models.CASCADE, verbose_name="Report Author") ... class Comment(models.Model): report = models.ForeignKey(accounts.models.Report, on_delete=models.CASCADE, related_name='comments') user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, verbose_name="Comment by") ...
over 4 years ago · Santiago Trujillo Report

0

Asegúrese de nombrar correctamente los directorios y los archivos (sin que entren en conflicto con el nombre de otros módulos o archivos que django importa como parte del proceso de inicio). Nombro la app de directorio y un archivo random.py . Django mientras inicia busca algo similar y, en lugar de buscar el módulo real, termina en estos archivos que creé. Y de ahí las excepciones de importación de errores o circulares.

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!