【发布时间】:2019-05-18 03:32:10
【问题描述】:
每当我尝试发布请求时,都会出现以下错误:
/api/ 处的类型错误
直接分配到多对多集合的前端是 禁止。请改用 project_team.set()。
请求方法:POST 请求 URL:http://127.0.0.1:8000/api/Django 版本:2.0 异常类型:TypeError 异常值:
直接分配到多对多集合的前端是 禁止。请改用 project_team.set()。
异常位置: C:\Users\Siddhesh\AppData\Local\Programs\Python\Python36\lib\site-packages\django\db\models\fields\related_descriptors.py 在 set 中,第 509 行 Python 可执行文件: C:\Users\Siddhesh\AppData\Local\Programs\Python\Python36\python.exe Python 版本:3.6.3 Python 路径:
['C:\Users\Siddhesh\Desktop\TechForSocial\backend', 'C:\Users\Siddhesh\AppData\Local\Programs\Python\Python36\python36.zip', 'C:\Users\Siddhesh\AppData\Local\Programs\Python\Python36\DLLs', 'C:\Users\Siddhesh\AppData\Local\Programs\Python\Python36\lib', 'C:\Users\Siddhesh\AppData\Local\Programs\Python\Python36', 'C:\Users\Siddhesh\AppData\Local\Programs\Python\Python36\lib\site-packages', 'C:\Users\Siddhesh\AppData\Local\Programs\Python\Python36\lib\site-packages\pytz-2018.5-py3.6.egg']
服务器时间:2018年12月17日星期一17:57:57
models.py:
class DummyPeopleModel(models.Model):
person_name = models.CharField(max_length=45)
def __str__(self):
return self.person_name
class ActiveProject(models.Model):
project_name = models.CharField(max_length=30)
project_abstract = models.CharField(max_length=1000)
project_paper = models.CharField(max_length=1000)
project_team = models.ManyToManyField(DummyPeopleModel, help_text='Team that works on this Project' )
project_join_us = models.CharField(max_length=1000)
def __str__(self):
return self.project_name
serializers.py:
from rest_framework import serializers
from .models import ActiveProject
class ActiveProjectSerializer(serializers.ModelSerializer):
class Meta:
model = ActiveProject
fields = ('id', 'project_name', 'project_abstract', 'project_paper', 'project_team', 'project_join_us',)
def create(self, validated_data):
return ActiveProject.objects.create(**validated_data)
views.py:
class ProjectList(generics.ListAPIView):
queryset = ActiveProject.objects.all()
serializer_class = ActiveProjectSerializer
def post(self, request):
serializer = ActiveProjectSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class ProjectDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = ActiveProject.objects.all()
serializer_class = ActiveProjectSerializer
【问题讨论】:
标签: python django rest api django-rest-framework