我正在使用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 --> 有效(!!!)但仅适用于一种产品!
- 发送 products_of_interest = [1,2] --> 需要 pk 而不是 unicode
- 发送 products_of_interest = 1;2 --> 需要 pk 而不是 unicode
- 发送 products_of_interest[0] = 1, products_of_interest[1] = 2 --> 什么都不做
我对序列化器有一些经验,所以我想,也许我需要告诉序列化器,我想给他不止一种产品。所以我在我的序列化程序中添加了这个:
products_of_interest = ProductSerializer(many=True, required=False, read_only=False)
现在我得到这个错误:
"<Contact: >" 需要为字段 "contact" 设置一个值,然后才能使用这种多对多关系。
我现在完全迷路了。我能做些什么?不可能我需要重写标准 rfw 函数来保存该死的简单 m2m,可以吗?
谢谢!
罗恩