2017-06-19 78 views
0

不能想出办法给self.companies.merchant一个IDDjango的/ Python的 - 无法分配 “1”: “Company.merchant” 必须是一个 “商人” 的实例

错误是:不能分配“1”:“Company.merchant”必须是“Merchant”实例。

我找了这样的另一个问题,但不明白。

self.merchant = Merchant.objects.create(
     name='merchant', 
     ref_code='45664', 
    ) 

    self.companies = Company.objects.create(
     name='companyone', 
     ref_code='222', 
     merchant=Merchant.objects.first().id, 
    ), 
    self.merchant.companies.add(*self.companies) 

商船模型:

class Merchant(models.Model): 
    name = models.CharField(max_length=255) 
    ref_code = models.CharField(max_length=32) 

公司型号:

class Company(models.Model): 
    name = models.CharField(max_length=255) 
    ref_code = models.CharField(max_length=32) 
    merchant = models.ForeignKey(
     'accounts.Merchant', related_name='companies') 
+1

不相关,但是如果您创建的商家实例(或merchant_id)已经设置的公司,则不需要调用'merchant.companies.add(...)' - 这些公司是_already_与商家相关联。 –

回答

2

您需要提供任何Merchant实例(以merchant参数)或id,但其分配给merchant_id说法。因此,这将工作:

self.companies = Company.objects.create(
     name='companyone', 
     ref_code='222', 
     merchant_id=Merchant.objects.first().id, 
    ), 

或者

self.companies = Company.objects.create(
     name='companyone', 
     ref_code='222', 
     merchant=Merchant.objects.first(), 
    ), 

而且你会得到TypeError,因为你试图解压self.companies这是Company实例,而不是迭代。 而@brunodesthuilliers指出,商家已经连接到创建Company对象。

0
self.companies = Company.objects.create(
    name='companyone', 
    ref_code='222', 
    merchant_id=Merchant.objects.first().id, 
) 
+0

请添加一些文字来解释您的答案 – EBH

相关问题