洗掉我的 django 專案上的帖子和評論時,我不斷收到此錯誤
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']
這是來自 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
問題是這個錯誤表明是通用的。所以我不知道問題出在哪里。..................................................... ..................................................... ..................................................... ..................................................... ..................................................... ..................................................... .
我的models.py如下
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
uj5u.com熱心網友回復:
您需要從模型的__str__方法回傳一個字串而不是一個User物件,嘗試將User您回傳的內容包裝Comment.__str__在str()
class Comment(models.Model):
...
def __str__(self):
return str(self.author)
uj5u.com熱心網友回復:
str從__self__as回傳
def __str__(self):
return self.author.username
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/422716.html
標籤:
上一篇:選擇第三個表中的相關物件
