尝试获取序列化程序“DialogSerializer”上的字段“对手”的值时出现 AttributeError

Ano*_*oop 2 django-rest-framework

在 serializer.py 中使用 create 方法后出现错误

这是我的错误:

尝试获取opponent serializer 上的字段值时出现 AttributeError DialogSerializer。序列化器字段可能命名不正确,并且与tuple 实例上的任何属性或键都不匹配。原始异常文本是:“元组”对象没有属性“对手”。

这是我的 serializer.py

class DialogSerializer(serializers.ModelSerializer):
    """A serializer for profile feed items."""
    def create(self, validated_data):
        dialog=Dialog.objects.get_or_create(**validated_data)
        return dialog
    class Meta:
        model = Dialog
        fields = ('id', 'owner','opponent')
        extra_kwargs = {'owner': {'read_only': True}}



class DialogueViewSet(viewsets.ModelViewSet):

serializer_class = DialogSerializer
permission_classes = (IsAuthenticated,)

def get_queryset(self):


    user=self.request.user

    return Dialog.objects.filter(owner=user)

def perform_create(self, serializer):
    """Sets the user profile to the logged in user."""

    serializer.save(owner=self.request.user)
# def create(self,**kwargs):
Run Code Online (Sandbox Code Playgroud)

Sha*_*kil 5

主要问题是get_or_create(object, created). 所以下面的事情应该可以解决你的问题。

 def create(self, validated_data):
        dialog, created =Dialog.objects.get_or_create(**validated_data)
        return dialog
Run Code Online (Sandbox Code Playgroud)