我是Django Rest框架的新手,我需要解析以下类型的数据:
[
{
"Fruit": {
"id": 1,
"name": "apple"
}
},
{
"Vegetable": {
"id": 4,
"name": "carrot"
}
},
{
"Fruit": {
"id": 2,
"name": "orange"
}
}
]
我创建了模型
class Fruit(models.Model):
name = models.CharField(max_length=15)
class Vegetable(models.Model):
name = models.CharField(max_length=15)
和序列化器:
class FruitSerializer(serializers.ModelSerializer):
class Meta:
model = models.Fruit
fields = ('id', 'name')
# + VegetableSerializer - very alike
是否可以创建另一个能够解析给定JSON数据的序列化器 并将它们存储到数据库中? 到目前为止,我的解决方法是:
@api_view(['POST'])
@parser_classes([JSONParser])
def import_view(request, format=None):
if request.method == 'POST':
if request.content_type != 'application/json':
return Response("Content type not valid", status=status.HTTP_400_BAD_REQUEST)
loaded_data = request.data
# do stuff with loaded_data
其中loaded_data
是词典列表,而loaded_data
中的一项如下所示:
list_item = {
'Fruit': {'id': 1, 'name': 'apple'}
}
然后我创建一个序列化器并保存数据:
data = list_item['Fruit']
obj = FruitSerializer(data=data)
obj.is_valid()
obj.save()
# Alternatively I used something like obj.save(id=data['id']) to save
# the object with desired ID.
我不知道这是否是一个好方法,所以我很感谢任何关于如何 解决这类问题。