我在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')
答案 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]