我有这样的看法:
class TaskApiView(APIView):
def post(self, request):
serializer = TaskSerializer(data=request.data)
print(request.data)
if serializer.is_valid():
print("valid", serializer.data)
serializer.save()
return Response(status=status.HTTP_201_CREATED)
else:
print(serializer.errors)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
请求正文:
{
"content": "asd"
}
记录:
{'content': 'asd'}
valid {'id': 30}
[21/Oct/2023 11:33:19] "POST /api/task/create HTTP/1.1" 201 0
但是当我尝试用这个视图获取所有任务时
class TaskListAPIView(generics.ListAPIView):
queryset = Task.objects.all()
serializer_class = TaskSerializer
我得到的只是ID:
[
{
"id": 25
}
]
串行化器:
class TaskSerializer(serializers.ModelSerializer):
class Meta:
model = Task
fields = "__all__"
模型
id: models.UUIDField(unique=True, auto_created=True)
content: models.CharField(default="")
creationDate: models.DateField(auto_now_add=True)
author: models.ForeignKey(User, on_delete=models.CASCADE)
status: models.CharField(
choices=StatusEnum,
max_length=5,
default=StatusEnum.TODO,
)
def __str__(self):
return self.id + self.content
settings.py:
REST_FRAMEWORK = {
"DEFAULT_PARSER_CLASSES": [
"rest_framework.parsers.JSONParser",
]
}
我想创建一个任务内容
1条答案
按热度按时间9jyewag01#
这是因为你的模型只有一个
id
字段。事实上,您将字段定义为属性,而不是注解,因此:您将需要进行迁移和迁移以正确地迁移它。可能会为现有模型注入默认值。
然而,对于您提供的给定数据,序列化程序将拒绝数据:你没有为
author
指定一个值。