Django / Python - 不能指定“1”:“Company.merchant”必须是“商家”实例

时间:2017-06-19 15:32:42

标签: python django rest django-rest-framework

找不到给self.companies.merchant一个id的方法

错误是:无法指定“1”:“Company.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')

2 个答案:

答案 0 :(得分: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对象。

答案 1 :(得分:0)

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