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')