如何使QuerySet JSON可序列化?

时间:2019-06-22 20:28:52

标签: json django serialization django-rest-framework django-queryset

我在Rest Framework中创建新对象时遇到问题。

据我所知,当我尝试覆盖item的字段时,它可能包含数据库中的所有项目。我以为这样可以用,它向我显示了工作页面,我可以选择一个项目。但是当我尝试将其发布以创建新对象时,它说“类型为'Item'的对象不可JSON序列化”

我试图弄清楚如何将Item.objects.all()转换为JSON数据。但是没有任何帮助。我知道,这并不是很难做到,但是我不能自己解决。

因此,我需要您的帮助,如何解决此问题?

这是我的序列化器

from rest_framework import serializers
from items.models import OrderItem, Item

class OrderItemSerializer(serializers.ModelSerializer):
    item = serializers.ChoiceField(choices=Item.objects.all())
    class Meta:
        model = OrderItem 
        fields = ('item', 'size', 'quantity', 'id')

1 个答案:

答案 0 :(得分:0)

from rest_framework import serializers
from items.models import OrderItem, Item

class OrderItemSerializer(serializers.ModelSerializer):
    item = serializers.SerializerMethodField()
    class Meta:
        model = OrderItem 
        fields = ('item', 'size', 'quantity', 'id')

    def get_item (self, obj):
        # in value list name all fields u want or empty for defaults 
        return Item.objects.all().values_list('pk', flat=True)

... 并在create方法内部(在Serializer中发布) ...

    def create(self, validated_data):
        req = self.context.get('request')
        items = req.data.get('item')
        if items:
            [OrderItem.item.add(
                oneitem) for oneitem in items]