Serialize models method with parameter in django REST API error " Object of type method is not JSON serializable "
Как сериализовать функцию модели с параметром. Когда я пытаюсь это сделать, получаю ошибку. вот так :
raise TypeError(f'Объект типа {o.class.name} '
TypeError: Метод Object of type не является JSON serializable
models.py
class Post(models.Model):
title = models.CharField(max_length=150)
def likes_exist(self,user):
liked = ""
for i in self.likes.all():
if i.user == user:
liked = liked
else:
liked = not liked
return liked
class LikePost(models.Model):
user = models.ForeignKey(Customer,on_delete=models.CASCADE,related_name='news_likes')
post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='likes')
views.py
@api_view(["POST"])
def post(request):
id = request.data["id"]
user = Customer.objects.filter(id=id)
post_object = Post()
post_object.likes_exist(user)
return PostSerializer #something else
Serializer.py
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ["title","likes_exist"]
error:
Traceback (most recent call last):
File "/home/shamsucm/.local/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
response = get_response(request)
File "/home/shamsucm/.local/lib/python3.8/site-packages/django/core/handlers/base.py", line 204, in _get_response
response = response.render()
File "/home/shamsucm/.local/lib/python3.8/site-packages/django/template/response.py", line 105, in render
self.content = self.rendered_content
File "/home/shamsucm/.local/lib/python3.8/site-packages/rest_framework/response.py", line 70, in rendered_content
ret = renderer.render(self.data, accepted_media_type, context)
File "/home/shamsucm/.local/lib/python3.8/site-packages/rest_framework/renderers.py", line 100, in render
ret = json.dumps(
File "/home/shamsucm/.local/lib/python3.8/site-packages/rest_framework/utils/json.py", line 25, in dumps
return json.dumps(*args, **kwargs)
File "/usr/lib/python3.8/json/__init__.py", line 234, in dumps
return cls(
File "/usr/lib/python3.8/json/encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/lib/python3.8/json/encoder.py", line 257, in iterencode
return _iterencode(o, 0)
File "/home/shamsucm/.local/lib/python3.8/site-packages/rest_framework/utils/encoders.py", line 67, in default
return super().default(obj)
File "/usr/lib/python3.8/json/encoder.py", line 179, in default
raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type method is not JSON serializable
как исправить эту ошибку . почему возникает эта ошибка ?
Спасибо
Я думаю, что вы должны создать liked переменную глобально в вашем Post классе модели
А в классе PostSerilaizer Meta добавить поле liked вместо likes_exist