我有一个来自采购模块的供应商模型,我只是将其导入到我的库存模块中。
这是我的采购模块模型供应商
from django.db import models
from django_countries.fields import CountryField
from Inventory.models import productDetails,products
from Accounts.models import elementaryhead
from datetime import datetime
import base64
# Create your models here.
class suppliers(models.Model):
companyName=models.CharField(max_length=30,verbose_name='Company Name')
companyAddress=models.CharField(max_length=50,verbose_name='Company Address')
city=models.CharField(max_length=20,verbose_name='City')
region=models.CharField(max_length=20,verbose_name='Region')
country=CountryField()
postalCode=models.IntegerField(verbose_name='Postal Code')
companyPhone=models.IntegerField(verbose_name="Company Phone")
companyFax=models.IntegerField(verbose_name='Company Fax')
elementaryID=models.ForeignKey(elementaryhead,on_delete=models.CASCADE,default=None,null=True,verbose_name='Elementary head',editable=False)
buyer=models.BooleanField(default=None,verbose_name='Is Buyer',editable=False)
supplier=models.BooleanField(default=None,verbose_name='Is Supplier',editable=False)
website=models.URLField(default=None,verbose_name='Website')
def save(self, force_insert=False, force_update=False, using=None,
update_fields=None):
accountID = elementaryhead.objects.order_by('id').last().id + 1
code = '00003-000010-0000' + str(accountID)
subhead=10
elementaryhead.objects.create(subhead_id=subhead, name=self.companyName,fixed=False, codes=code, right=True)
accountID = elementaryhead.objects.order_by('id').last().id + 1
subhead=11
code = '00003-000011-0000' + str(accountID)
elementaryhead.objects.create(subhead_id=subhead, name=self.companyName+'(I/TAX PAYABLE)',fixed=False, codes=code, right=True)
accountID = elementaryhead.objects.order_by('id').last().id + 1
subhead=15
code = '00003-000015-0000' + str(accountID)
elementaryhead.objects.create(subhead_id=subhead, name=self.companyName+'(GST W/HELD PAYABLE)',fixed=False, codes=code, right=True)
self.supplier = True
self.buyer = False
super(suppliers,self).save()
def __str__(self):
return self.companyName
这是我的库存模块模型InventoryIn
from django.db import models
from datetime import datetime
from Purchase.models import suppliers,contracts
class inventoryIn(models.Model):
supplierID=models.ForeignKey(suppliers,on_delete=models.CASCADE,verbose_name='Supplier')
productID=models.ForeignKey(products,on_delete=models.CASCADE)
purchaseContractID=models.ForeignKey(contracts,on_delete=models.CASCADE)
unitsIn=models.IntegerField(verbose_name='Units In')
doID=models.IntegerField(verbose_name='Do ID')
doImage=models.ImageField(upload_to='/assets/image')
invoiceID=models.IntegerField(verbose_name='Invoice ID')
invoiceImage=models.ImageField(upload_to='/assets/image')
agingDate=models.DateField()
dateOfEntry=models.DateField(default=datetime.now())
def __str__(self):
return self.supplierID
我基本上是添加了两个与Purchase模块相关的ForeignKey(supplierID,purchaseContractID)。但是它抛出了一个错误
ImportError:无法导入名称“供应商” 我曾尝试将其导入InventoryIn模型类中。但是它对我没有用。
答案 0 :(得分:1)
这是用于循环导入。但是您可以通过
class inventoryIn(models.Model):
supplierID=models.ForeignKey('Purchase.suppliers',on_delete=models.CASCADE,verbose_name='Supplier')
productID=models.ForeignKey(products,on_delete=models.CASCADE)
purchaseContractID=models.ForeignKey('Purchase.contracts',on_delete=models.CASCADE)
unitsIn=models.IntegerField(verbose_name='Units In')
doID=models.IntegerField(verbose_name='Do ID')
doImage=models.ImageField(upload_to='/assets/image')
invoiceID=models.IntegerField(verbose_name='Invoice ID')
invoiceImage=models.ImageField(upload_to='/assets/image')
agingDate=models.DateField()
dateOfEntry=models.DateField(default=datetime.now())
def __str__(self):
return self.supplierID
也不要忘记删除此导入
from Purchase.models import suppliers,contracts
答案 1 :(得分:0)
您有一个循环进口。您的一个Python文件从另一个导入,然后反之亦然。这就导致了这种问题-在A仍处于设置状态时B试图从A导入。
最简单的解决方案是将它们全部放入一个文件中,另一种有问题的解决方案是仅在save
函数中导入另一个模块(因此稍后再进行)。
更好的解决方案是仔细查看您的数据模型,以了解为什么存在这种循环性以及这是否真的必要,因为这通常是不良设计的标志。
答案 2 :(得分:0)
您有一个循环进口。但是您似乎根本没有理由将库存模型导入到供应商中,因为您没有在该文件中使用它们。删除导入。
答案 3 :(得分:0)
您可以尝试以下方法吗?
https://<your_subdomain>.onelogin.com/session_via_api_token
代替导入模型