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

339
Views
Importación circular entre modelos y ayudantes en Django.

Estoy tratando de agregar una señal post_save en mi aplicación Django y me encuentro con un problema de importación circular.

helpers.py

 from tracker.models import Record def get_account_id(name): return name + '123'

models.py

 from helpers import get_account_id class Record(models.Model): id = models.AutoField(primary_key=True) created_at = models.DateTimeField(auto_now_add=True) name = models.CharField(max_length=120, blank=True) matched_account_id = models.CharField(max_length=120, unique=False, blank=True) def find_matched_account(sender, instance, *args, **kwargs): instance.matched_account_id = get_account_id(instance.name) instance.save() pre_save.connect(find_matched_account, sender=Record)

Obviamente, esto es una simplificación, pero resume el problema con el que me estoy encontrando. Podría mover el código de los helpers a los models , pero preferiría almacenar cosas como esta en los helpers porque terminaré usándolo en otros lugares.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Mueva la importación a la función.

editar: envió esto un poco prematuramente: P

Cuando sus importaciones están en la parte superior de un archivo, se ejecutan tan pronto como se importa ese archivo. Eso provoca este tipo de error.

Puede limitar sus importaciones al alcance de una función para evitar este problema.

Cuando se encuentre con este problema, al menos debe verificar que su arquitectura sea realmente adecuada. A veces (pero ciertamente no siempre) es una indicación de que su arquitectura puede mejorarse.

Encuentro que generalmente puede mover la función del modelo a los ayudantes y hacer que el primer argumento de la función sea una instancia del modelo. De esa manera, solo tendrás un ayudante importando un ayudante.

(segunda edición: código de ejemplo eliminado, que no tenía sentido)

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!