-4

First, let me start by letting you know that I'm creating a time attendance and payroll software. I have multiple models with Employee at the center of the entire architecture. Different apps have different models each storing different kind of settings(LeaveSettings, ShiftSetttings, etc ).

These models are a foreign key in the Employee model. I also have some hidden models to store arbitrary data like Balances, etc. Employee is also imported and used as a foreign key in all of these models.

Eg: LeaveSettings and LeaveBalance are in an app called leavemanagement. Employee imports LeaveSettings and has a LeaveSettings Foreign Key LeaveBalance imports Employee and uses it as a foreign key.

This is the error i get:

  File "E:\OnTime\mysite\leavemanagement\models\__init__.py", line 4, in <module>
    from leavemanagement.models.model_leavebalance import LeaveBalance
  File "E:\OnTime\mysite\leavemanagement\models\model_leavebalance.py", line 3, in <module>
    from master.models.model_employee import Employee
  File "E:\OnTime\mysite\master\models\__init__.py", line 4, in <module>
    from master.models.model_employee import Employee
  File "E:\OnTime\mysite\master\models\model_employee.py", line 9, in <module>
    from payroll.models.model_months import Months
  File "E:\OnTime\mysite\payroll\models\__init__.py", line 6, in <module>
    from payroll.models.model_reimbursmentdetail import Reimbursement
  File "E:\OnTime\mysite\payroll\models\model_reimbursmentdetail.py", line 1, in <module>
    from master.models.model_employee import Employee
ImportError: cannot import name 'Employee'

1 Answers1

0

Without code this is hard to answer but at a guess you've got a circular dependency somewhere in which case you need to remove it. Normally when including a ForeignKey your model will be something like.

from models import Model1

class Model2(models.Model):
   model1 = models.ForeignKey(Model1)

You can replace this with:

class Model2(models.Model):
   model1 = models.ForeignKey('Model1')
HenryM
  • 5,557
  • 7
  • 49
  • 105