Python 模型中的django循环导入
我知道这里有一个循环导入,但其中一个用于定义一些外键字段,另一个仅用于另一个模型中的属性 型号: 收据/型号.pyPython 模型中的django循环导入,python,django,importerror,Python,Django,Importerror,我知道这里有一个循环导入,但其中一个用于定义一些外键字段,另一个仅用于另一个模型中的属性 型号: 收据/型号.py from django.db import models from employees.models import Employee class Receipt(models.Model): Supervisor = models.ForeignKey(Employee, on_delete=models.CASCADE, related_name='receipt_su
from django.db import models
from employees.models import Employee
class Receipt(models.Model):
Supervisor = models.ForeignKey(Employee, on_delete=models.CASCADE, related_name='receipt_supervisor')
Employee = models.ForeignKey(Employee, on_delete=models.CASCADE, related_name='receipt_employee')
amount = models.DecimalField(max_digits=6, decimal_places=2)
from django.db import models
from receipts.models import Receipt
class Employee(models.Model):
number = models.CharField(max_length=50, unique=True)
first_name = models.CharField(max_length=255)
last_name = models.CharField(max_length=255)
@property
def receipt_sum(self):
receipts = Receipt.objects.filter(Employee=self.pk)
sum = 0
for receipt in receipts:
sum += receipt.amount
return sum
employees/models.py
from django.db import models
from employees.models import Employee
class Receipt(models.Model):
Supervisor = models.ForeignKey(Employee, on_delete=models.CASCADE, related_name='receipt_supervisor')
Employee = models.ForeignKey(Employee, on_delete=models.CASCADE, related_name='receipt_employee')
amount = models.DecimalField(max_digits=6, decimal_places=2)
from django.db import models
from receipts.models import Receipt
class Employee(models.Model):
number = models.CharField(max_length=50, unique=True)
first_name = models.CharField(max_length=255)
last_name = models.CharField(max_length=255)
@property
def receipt_sum(self):
receipts = Receipt.objects.filter(Employee=self.pk)
sum = 0
for receipt in receipts:
sum += receipt.amount
return sum
我得到这个错误:
无法从部分初始化的模块“employees.models”导入名称“Employee”(很可能是由于循环导入)
是否有办法绕过此问题,以便在Employee属性中执行收据查询?或者我需要在其他地方进行计算
谢谢
是否有办法绕过此问题,以便我可以在Employee
属性中执行收据查询
是,您可以通过以下方法导入模块:
from django.db import models
class Employee(models.Model):
number = models.CharField(max_length=50, unique=True)
first_name = models.CharField(max_length=255)
last_name = models.CharField(max_length=255)
@property
def receipt_sum(self):
from receipts.models import Receipt
receipts = Receipt.objects.filter(Employee=self.pk)
sum = 0
for receipt in receipts:
sum += receipt.amount
return sum
尝试在employee.models.py的
def Receipt_sum(self)
中导入Receipt
,类似于def Receipt_sum(self):from receipts.models导入收据
…嗨,Daniel,您尝试过在此处搜索类似问题吗?看看这个答案,我相信它回答了你的问题:哦!好极了!导入到属性中是一种方法。我有一些额外的数学和过滤,我认为这会混淆问题,但给你额外的分数,先生!我刚刚意识到这个关系可以应用filter方法receives=self.receipt\u employee.filter(is_deleted=False,created_at_uyear=datetime.now().year)
,这才是我真正想要的!再次感谢@WillemVanOnsem