'I keep getting this error when deleting posts and comments on my django project TypeError: __str__ returned non-string (type User)

I keep getting this error when deleting posts and comments on my django project

TypeError at /admin/blog/comment/
__str__ returned non-string (type User)
Request Method: POST
Request URL:    http://127.0.0.1:8000/admin/blog/comment/
Django Version: 2.2.1
Exception Type: TypeError
Exception Value:    
__str__ returned non-string (type User)
Exception Location: /home/martin/.local/lib/python3.8/site-packages/django/contrib/admin/utils.py in format_callback, line 126
Python Executable:  /usr/bin/python3
Python Version: 3.8.10
Python Path:    
['/home/martin/django-blog',
 '/usr/lib/python38.zip',
 '/usr/lib/python3.8',
 '/usr/lib/python3.8/lib-dynload',
 '/home/martin/.local/lib/python3.8/site-packages',
 '/usr/local/lib/python3.8/dist-packages',
 '/usr/lib/python3/dist-packages']

This is error from konsole

   no_edit_link = '%s: %s' % (capfirst(opts.verbose_name), obj)
TypeError: __str__ returned non-string (type User)
[28/Jan/2022 09:46:12] "POST /admin/blog/comment/ HTTP/1.1" 500 135782

The thing is this error indicates as generic. So i wouldnt know where the issue is at. .............................................................................................................................................................................................................................................................................................................

My models.py as below

from django.db import models
from django.utils import timezone
from django.urls import reverse
from django.conf import settings


class PostManager(models.Manager):
    def like_toggle(self, user, post_obj):
        if user in post_obj.liked.all():
            is_liked = False
            post_obj.liked.remove(user)
        else:
            is_liked = True
            post_obj.liked.add(user)
        return is_liked


class Post(models.Model):
    author = models.ForeignKey(
        settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    title = models.CharField(max_length=100)
    content = models.TextField()
    liked = models.ManyToManyField(
        settings.AUTH_USER_MODEL, blank=True, related_name='liked')
    date_posted = models.DateTimeField(default=timezone.now)

    objects = PostManager()

    class Meta:
        ordering = ('-date_posted', )

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('post_detail', kwargs={'pk': self.pk})


class Comment(models.Model):
    post = models.ForeignKey(
        Post, related_name='comments', on_delete=models.CASCADE)
    author = models.ForeignKey(
        settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    text = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)
    approved_comment = models.BooleanField(default=True)

    def approve(self):
        self.approved_comment = True
        self.save()

    def get_absolute_url(self):
        return reverse("post_list")

    def __str__(self):
        return self.author


Solution 1:[1]

Return str from __self__ as

def __str__(self):
    return self.author.username

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1