django-restframework
APIに使用しています。オブジェクトをリストし、それらを作成できるシリアライザーを作成しました。
私はContact
エンティティとを持っていますProduct
。の間の標準的な m2m がありlikes
ます。
これが私のモデルです:
class Contact(models.Model):
...
products_of_interest = models.ManyToManyField(Product, related_name="interested_contacts")
私のシリアライザは、次のように単純です。
class ContactSerializer(serializers.ModelSerializer):
class Meta:
model = Contact
このシリアライザーを介して連絡先を一覧表示すると、すべての連絡先オブジェクトが製品 ID の配列と共に取得されます。
"products_of_interest": [
1,
2
]
ここで、連絡先を作成して m2m に入力したい場合、(Chrome Postman とフォームデータを介して) 以下を取得します。
- Products_of_interest = 1 を送信 --> 動作します (!!!) が、1 つの製品に対してのみです!
- products_of_interest = [1,2] を送信 --> ユニコードではなく pk が必要
- Products_of_interest = 1;2 を送信 --> ユニコードではなく pk が必要
- products_of_interest[0] = 1, products_of_interest[1] = 2 を送信 --> 何も行われません
私はシリアライザーの経験がある程度あるので、シリアライザーに複数の製品を提供したいということを伝える必要があるのではないかと考えました。だから私はシリアライザーにこれを追加しました:
products_of_interest = ProductSerializer(many=True, required=False, read_only=False)
今、私はこのエラーを受け取ります:
この多対多の関係を使用するには、「<Contact: >」に「contact」フィールドの値が必要です。
私は今完全に迷っています。私に何ができる?非常に簡単なm2mを保存するために、標準のrfw関数をオーバーライドする必要があるということはあり得ませんよね?
ありがとう!
ロン