500 Internal Server Error при попытке получить данные с помощью Django Rest Framework через Javascript

Я пытаюсь получить данные поста из бэкенда с помощью fetch. Однако я получаю ошибку сервера 500 при попытке получить данные. Я пробовал использовать .serialize() в бэкенде для передачи данных, а также пытался вернуть jsonResponse путем сериализации объекта запроса, что дало бы мне эту ошибку: Object of type User is not JSON serializable. Я пробовал, отправляя объект и без объекта. Есть предложения?

код models.py

class Post(models.Model):
    user = models.ForeignKey(User,on_delete=models.PROTECT, default='',null=True)
    message = models.TextField()
    date = models.DateTimeField()
    likes = models.ManyToManyField(User,blank=True,null=True,related_name="posts")
    
    def serialize(self):
            return {
            "id": self.id,
            "user": self.user,
            "likes": [user for user in self.likes.all()],
            "message": self.message,
            "date": self.date.strftime("%b %d %Y")
        }

код urls.py

path("post/<int:id>",views.post, name="post")

код views.py

@csrf_exempt
def post(request,id):
    post = Post.objects.get(id=id)
    if request.method == "GET":
        return JsonResponse({"post":post.serialize()})

code script.js (post.getAttribute('name') - id поста)

posts.forEach(post => {
fetch(`post/${post.getAttribute('name')}`)
.then(response => response.json())
.then(data => {
    console.log(data)
})

)}

Потому что вы пытаетесь User model instance преобразовать JSON. Просто измените "user": self.user to "user": self.user.email или что вы хотите

def serialize(self):
        return {
        "id": self.id,
        "user": self.user.email,
        "likes": [user.id for user in self.likes.all()],
        "message": self.message,
        "date": self.date.strftime("%b %d %Y")
    }
Вернуться на верх