Django - 多对一 - 不能分配必须是实例
Django - Many to One - Cannot Assign Must Be Instance Of
如果这是重复的,我深表歉意post。我花了几天时间研究并试图弄清楚这一点……但我走到了死胡同。我有一个模型 (Header),其中包含我所有的订单 headers,我需要将其 link 发送到它们来自的(MarketPlace 模型)市场。 MarketPlace table 中只有 2 或 3 行,但 Header 中的每一行都应与其中一行相关。
以下是我尝试在 shell 中创建记录的方式:(我也可能做错了):
h = Header.objects.filter(retailOrderNum = '185680144')
a = Marketplace(id = None, contactName = 'MP Name',address1='555',address2='666',city = 'Salt Lake City'
,state = 'UT',zipCode='84104',country = 'US',phone='555-555-5555',channel=h)
我收到这个错误:
无法分配“]>”:"MarketPlace.channel" 必须是 "Header" 实例。
这是我的模型:
class Header(models.Model):
retailOrderNum = models.CharField(max_length=50,primary_key = True)
orderNum = models.CharField(max_length=50)
channel = models.CharField(max_length=50)
orderDate = models.DateTimeField(null=True)
contactName = models.CharField(max_length=500)
address1 = models.CharField(max_length=1500)
address2 = models.CharField(max_length=1500, null=True)
city = models.CharField(max_length =100)
state =models.CharField(max_length =100)
zipCode =models.CharField(max_length=100,null=True)
country = models.CharField(max_length =100)
phone = models.CharField(max_length =100,null=True)
#shippingSpecifications =models.CharField(max_length =100)
shippingCode = models.CharField(max_length =100)
orderShippedDate = models.DateTimeField(null=True)
def __str__(self):
return self.retailOrderNum
class Line(models.Model):
retailOrderNum =models.ForeignKey(Header, on_delete=models.CASCADE,db_column='retailOrderNum')
item = models.CharField(max_length =100)
lineNo = models.IntegerField()
lineId = models.CharField(max_length =100)
itemId = models.CharField(max_length =100)
qty = models.IntegerField()
retail = models.FloatField()
revenue = models.FloatField()
shipping = models.FloatField()
lineStatus = models.CharField(max_length =100)
qtyShipped = models.IntegerField(default=0)
trackingNumber = models.CharField(max_length =500,null=True)
shipCarrier = models.CharField(max_length =100,null=True)
shippedDate = models.DateTimeField(null=True)
def __str__(self):
return self.item
class MarketPlace(models.Model):
channel = models.ForeignKey(Header)
contactName = models.CharField(max_length=500)
address1 = models.CharField(max_length=1500)
address2 = models.CharField(max_length=1500, null=True)
city = models.CharField(max_length =100)
state =models.CharField(max_length =100)
zipCode =models.CharField(max_length=100,null=True)
country = models.CharField(max_length =100)
phone = models.CharField(max_length =100,null=True)
下面的代码returns一个查询集:
h = Header.objects.filter(retailOrderNum='185680144')
你只需要为通道参数提供一个模型(它在回溯中说 "MarketPlace.channel" must be a "Header" instance
)——所以你应该改用它;
h = Header.objects.get(retailOrderNum='185680144')
如果这是重复的,我深表歉意post。我花了几天时间研究并试图弄清楚这一点……但我走到了死胡同。我有一个模型 (Header),其中包含我所有的订单 headers,我需要将其 link 发送到它们来自的(MarketPlace 模型)市场。 MarketPlace table 中只有 2 或 3 行,但 Header 中的每一行都应与其中一行相关。
以下是我尝试在 shell 中创建记录的方式:(我也可能做错了):
h = Header.objects.filter(retailOrderNum = '185680144')
a = Marketplace(id = None, contactName = 'MP Name',address1='555',address2='666',city = 'Salt Lake City'
,state = 'UT',zipCode='84104',country = 'US',phone='555-555-5555',channel=h)
我收到这个错误:
无法分配“]>”:"MarketPlace.channel" 必须是 "Header" 实例。
这是我的模型:
class Header(models.Model):
retailOrderNum = models.CharField(max_length=50,primary_key = True)
orderNum = models.CharField(max_length=50)
channel = models.CharField(max_length=50)
orderDate = models.DateTimeField(null=True)
contactName = models.CharField(max_length=500)
address1 = models.CharField(max_length=1500)
address2 = models.CharField(max_length=1500, null=True)
city = models.CharField(max_length =100)
state =models.CharField(max_length =100)
zipCode =models.CharField(max_length=100,null=True)
country = models.CharField(max_length =100)
phone = models.CharField(max_length =100,null=True)
#shippingSpecifications =models.CharField(max_length =100)
shippingCode = models.CharField(max_length =100)
orderShippedDate = models.DateTimeField(null=True)
def __str__(self):
return self.retailOrderNum
class Line(models.Model):
retailOrderNum =models.ForeignKey(Header, on_delete=models.CASCADE,db_column='retailOrderNum')
item = models.CharField(max_length =100)
lineNo = models.IntegerField()
lineId = models.CharField(max_length =100)
itemId = models.CharField(max_length =100)
qty = models.IntegerField()
retail = models.FloatField()
revenue = models.FloatField()
shipping = models.FloatField()
lineStatus = models.CharField(max_length =100)
qtyShipped = models.IntegerField(default=0)
trackingNumber = models.CharField(max_length =500,null=True)
shipCarrier = models.CharField(max_length =100,null=True)
shippedDate = models.DateTimeField(null=True)
def __str__(self):
return self.item
class MarketPlace(models.Model):
channel = models.ForeignKey(Header)
contactName = models.CharField(max_length=500)
address1 = models.CharField(max_length=1500)
address2 = models.CharField(max_length=1500, null=True)
city = models.CharField(max_length =100)
state =models.CharField(max_length =100)
zipCode =models.CharField(max_length=100,null=True)
country = models.CharField(max_length =100)
phone = models.CharField(max_length =100,null=True)
下面的代码returns一个查询集:
h = Header.objects.filter(retailOrderNum='185680144')
你只需要为通道参数提供一个模型(它在回溯中说 "MarketPlace.channel" must be a "Header" instance
)——所以你应该改用它;
h = Header.objects.get(retailOrderNum='185680144')