0

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

据我所知,当我试图覆盖项目的字段时,它可以包含我数据库中的所有项目。我想,这会起作用,它向我展示了工作页面,我可以选择一个项目。但是当我试图发布它来创建一个新对象时,它说“'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')
4

1 回答 1

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)

...并在创建方法内部(在序列化程序中发布)...

    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]
于 2019-06-23T06:22:34.290 回答