'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 |
