Django is_valid()在嵌套序列化程序上返回false
代码 Serializers.py:Django is_valid()在嵌套序列化程序上返回false,django,django-rest-framework,Django,Django Rest Framework,代码 Serializers.py: class ActivitySerializer(serializers.ModelSerializer): class Meta: model = Activity class RouteOrderingSerializer(serializers.ModelSerializer): activity = ActivitySerializer() class Meta: model = RouteOr
class ActivitySerializer(serializers.ModelSerializer):
class Meta:
model = Activity
class RouteOrderingSerializer(serializers.ModelSerializer):
activity = ActivitySerializer()
class Meta:
model = RouteOrdering
fields = ('id','activity','day','order','route','activity')
def create(self, validated_data):
routeordering = RouteOrdering.objects.create(**validated_data)
return routeordering
创建函数:
def make(data):
serializer = RouteOrderingSerializer(data=data)
serializer.is_valid(raise_exception=True)
serializer.save()
问题
出于某种原因,由于可写嵌套序列化程序,serializer.is_valid()函数会将传递的数据视为无效,并且不允许我保存实例。
我还尝试跳过is_valid()函数,但rest框架当然不允许这样做
数据是当前格式的,ORM应该接受它
任何帮助都将被告知:)
可能值得注意
当我传递要为Routeorderingserializer创建的数据时,我只想传递一个活动id,而不是整个活动对象。iv'e也尝试了一个完整的活动对象,但没有任何帮助。对于我来说,我将添加一个新的
RouteOrderingWriteSerializer
,它不使用嵌套的序列化程序(注释activity=ActivitySerializer()
行),并在视图中重写get_serializer\u class
方法,如果self.action='create'
,使用新添加的RouteOrderingWriteSerializer
实际上没有考虑到这一点,非常感谢:)对于我,我将添加一个新的RouteOrderingWriteSerializer
,它不使用嵌套序列化程序(注释activity=ActivitySerializer()
行),并在视图中,重写get\u serializer\u class
方法,如果self.action==“create”
,请使用新添加的RouteOrderingWriteSerializer
实际上没有考虑到这一点,非常感谢:)