0
私は2つの異なるモデルのアプリを持っています。エラーは 'can not import name sku'です。これは循環インポートのためだと思います。私は現在の方法でモデルインポートを参照することなく、このapp.modelをまだどのように参照できますか。アプリモデルの円形インポート
モデルPurchaseOrderDetail のApp PURCHASE_ORDER
from product.models import InventoryTransaction
class PurchaseOrderDetail(AuditMixin, models.Model):
purchase_order = models.ForeignKey(PurchaseOrder,
on_delete=models.PROTECT)
sku = models.ForeignKey(Sku, on_delete=models.PROTECT)
qty_received = models.IntegerField(default=0, null=True, blank=True)
reason_code = models.IntegerField(default=0, null=True, blank=True)
def _get_sku_code(self):
return self.sku.sku_code
def _set_sku_code(self, value):
tenant = self.purchase_order.tenant
sku = Sku.objects.get(tenant=tenant, sku_code=value)
self.sku = sku
sku_code = property(_get_sku_code, _set_sku_code)
def calc_received(self):
# calculate sum of qty_received from inventory_transactions
sum_quantity = InventoryTransaction.objects.filter(
sku=self.sku,
po_number=self.purchase_order,
transaction_type='100'
).aggregate(
quantity_sum=Sum(F('quantity'))
)
return sum_quantity
モデルInventorytransaction アプリ製品
from purchase_order.models import PurchaseOrderDetail
class InventoryTransaction(models.Model):
tenant = models.ForeignKey(Tenant)
po_number = models.CharField(max_length=100)
inventory_transaction = models.ForeignKey(PurchaseOrderInventoryTransaction)
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
# update the PO detail with the qty_received
obj = PurchaseOrderDetail.objects.get(
purchase_order=self.po_number,
sku=self.inventory_transaction.sku
)
obj.qty_received = obj.calc_received()
obj.save()
私は実際にはこれを読む前にその権利を試してみました。ありがとうございました – user2168066
もう一つのオプションは、在庫信号をPurchaseOrderDetailから切り離すために、モデル信号( 'post_save()'が明白な候補になります)を使うことです。 –