gpt4 book ai didi

python - 如果对象在 Django Rest Framework 中存在函数则返回字符串

转载 作者:太空宇宙 更新时间:2023-11-04 09:50:38 24 4
gpt4 key购买 nike

我有一个关于函数的问题,如果对象存在于 Django Rest Framework 中则返回字符串。

我要设置条件:如果 FriendshipRequest 模型有 from_user = request.userto_user=self.user,这个 relationship_to_user 字段将返回:'Existed',如果没有,打印'Not Existed'

序列化器中的代码:

class UserDetailSerializer(ModelSerializer):
relationship_to_user = SerializerMethodField()
class Meta:
model = User
fields = [
'id',
'relationship_to_user',
]

def get_relationship_to_user(self, instance):
request = self.context.get('request')
if FriendshipRequest.objects.filter(from_user=request.user, to_user=instance).exist():
return 'Existed'
else:
return 'Not Existed'

这段代码在Viewset.py

class UserDetailAPIView(RetrieveAPIView):
queryset = User.objects.all()
serializer_class = UserDetailSerializer
lookup_field = 'username'

def retrieve(self, request, *args, **kwargs):
to_user = self.get_object()
serializer = UserDetailSerializer(to_user, context={'request': request})
return Response(serializer.data)

问题回溯:获取

 File "C:\Python27\lib\site-packages\django\core\handlers\exception.py" in inner
41. response = get_response(request)

File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)

File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "C:\Python27\lib\site-packages\django\views\decorators\csrf.py" in wrapped_view
58. return view_func(*args, **kwargs)

File "C:\Python27\lib\site-packages\django\views\generic\base.py" in view
68. return self.dispatch(request, *args, **kwargs)

File "C:\Python27\lib\site-packages\rest_framework\views.py" in dispatch
489. response = self.handle_exception(exc)

File "C:\Python27\lib\site-packages\rest_framework\views.py" in handle_exception
449. self.raise_uncaught_exception(exc)

File "C:\Python27\lib\site-packages\rest_framework\views.py" in dispatch
486. response = handler(request, *args, **kwargs)

File "C:\Python27\lib\site-packages\rest_framework\generics.py" in get
210. return self.retrieve(request, *args, **kwargs)

File "C:\Users\User\Desktop\FeedGit\backend\api\authentication\views.py" in retrieve
35. return Response(serializer.data)

File "C:\Python27\lib\site-packages\rest_framework\serializers.py" in data
534. ret = super(Serializer, self).data

File "C:\Python27\lib\site-packages\rest_framework\serializers.py" in data
263. self._data = self.to_representation(self.instance)

File "C:\Python27\lib\site-packages\rest_framework\serializers.py" in to_representation
501. ret[field.field_name] = field.to_representation(attribute)

File "C:\Python27\lib\site-packages\rest_framework\fields.py" in to_representation
1755. return method(value)

File "C:\Users\User\Desktop\FeedGit\backend\api\authentication\serializers.py" in get_relationship_to_user
166. if FriendshipRequest.objects.filter(from_user=request.user, to_user=instance).exist():

Exception Type: AttributeError at /api/v1/users/duongnuhabang/
Exception Value: 'QuerySet' object has no attribute 'exist'

最佳答案

序列化器.py

class UserDetailSerializer(ModelSerializer):
relationship_to_user = SerializerMethodField()
class Meta:
model = User
fields = [
'id',
'relationship_to_user',
]

def get_relationship_to_user(self, instance):
request = self.context.get('request')
if FriendshipRequest.objects.filter(from_user=request.user, to_user=instance).exists():
return 'Existed'
else:
return 'Not Existed'

View .py

class MyUser(RetrieveAPIView):
serializer_class = UserDetailSerializer

# you can override this method or not
def retrieve(self, request, *args, **kwargs):
to_user = self.get_object()
serializer = UserDetailSerializer(to_user, context={'request': request})
return Response(serializer.data)

关于python - 如果对象在 Django Rest Framework 中存在函数则返回字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47936083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com