您使用什么版本的 Django 和 drf?我无法使用 Django 1.7 和 drf 2.4.2 重现您的错误。这是我的代码:
模型.py
from django.db import models
class Product(models.Model):
pass
class Contact(models.Model):
products_of_interest = models.ManyToManyField(Product,
related_name="interested_contacts")
序列化器.py
from .models import Contact
from rest_framework import serializers
class ContactSerializer(serializers.ModelSerializer):
class Meta:
model = Contact
views.py
from rest_framework import viewsets
from .models import Contact
from .serializers import ContactSerializer
class ContactViewSet(viewsets.ModelViewSet):
queryset = Contact.objects.all()
serializer_class = ContactSerializer
urls.py
from django.conf.urls import include, url
from rest_framework import routers
from . import views
router = routers.DefaultRouter()
router.register(r'contacts', views.ContactViewSet, 'contacts')
urlpatterns = router.urls
urlpatterns = [
url(r'^', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
./manage.py shell
>>> from m2m_test.models import Product
>>> for i in range(3): Product.objects.create()
...
<Product: Product object>
<Product: Product object>
<Product: Product object>
>>>
然后在网络前端http://localhost:8000/contacts/
:
使用原始数据形式发布:
{
“感兴趣的产品”:[1,2,3]
}
-> 就可以了。