出现这种情况的原因可能是SlugRelatedField在保存对象时无法正确获取到相关的字段。可以尝试以下方法解决:
以下是示例代码:
from rest_framework import serializers
from .models import Author, Book
class AuthorSerializer(serializers.ModelSerializer):
class Meta:
model = Author
fields = '__all__'
class BookSerializer(serializers.ModelSerializer):
author = serializers.SlugRelatedField(slug_field='name', queryset=Author.objects.all())
class Meta:
model = Book
fields = '__all__'
def create(self, validated_data):
author_name = validated_data.pop('author')
author, created = Author.objects.get_or_create(name=author_name)
validated_data['author'] = author
return super().create(validated_data)
在这个示例中,我们使用SlugRelatedField来实现author字段与Author模型的关联。在create方法中,我们覆盖了该序列化器默认的create方法,将关联的author字段从validated_data中提取出来,获取或创建相关的Author对象,并将其赋值回validated_data。这样,即使保存了对象后SlugRelatedField出现无法获取的错误,我们仍然可以通过内部的get_or_create方法来获取到相应对象的值。
上一篇:保存对象后的Django操作错误
下一篇:保存对象后,外键为空。