【发布时间】:2017-06-13 03:46:12
【问题描述】:
我正在编写一个可以将标签添加到 todolist 的示例程序。所以我创建了标签样本。但是当我无法将它添加到 todo 序列化程序时。
这是我编写的序列化程序。
class TagSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
name = serializers.CharField(required=False, max_length=100)
def create(self, validated_data):
return Tag.objects.create(**validated_data)
class LocationSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
latitude = serializers.CharField(max_length=100)
longitude = serializers.CharField(max_length=100)
def create(self, validated_data):
return Location.objects.create(**validated_data)
class ToDoSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
work_id = serializers.CharField(max_length=100)
tags = TagSerializer(many=True)
location = LocationSerializer()
我尝试将数据作为 POST 发送到 ToDo 序列化程序。但是如何将位置和标签详细信息发送到 API 视图。
API 视图
class ToDoList(APIView):
def post(self, request, format=None):
serializer = ToDoSerializer(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)
如何将数据作为 POST 传递给 ToDoList。我必须在 ToDoSerializer 上编写自定义帖子视图吗?
型号
class Tag(models.Model):
name = models.CharField(max_length=100)
class Location(models.Model):
latitude = models.CharField(max_length=100)
longitude = models.CharField(max_length=100)
class ToDo(models.Model):
work_id = models.CharField(max_length=100)
tags = models.ManyToManyField(Tag)
location = models.ForeignKey(Location)
【问题讨论】:
标签: django python-2.7 serialization django-rest-framework