django.db.utils.IntegrityError
来源:6-11 用户评论动态
Otiose
2020-12-30
老师,不知道为什么我的评论功能有点异常,有些评论可以发布,但是有些评论却弹框报错。
以下是我的报错信息:
以下是我数据库中的news_news('动态’是动态内容,'aaa’和’aaaaa’是已经正常发出去的评论,然后现在再发一条评论就报错了):
以下是我的视图函数:
news/models
class News(models.Model):
uuid_id = models.UUIDField(primary_key=True, default=uuid.uuid4(), editable=False)
user = models.ForeignKey(User, null=True, blank=True, on_delete=models.SET_NULL,
related_name='publisher', verbose_name='用户')
parent = models.ForeignKey('self', null=True, blank=True, on_delete=models.CASCADE,
related_name='thread', verbose_name='自关联')
content = models.TextField(verbose_name='动态内容')
liked = models.ManyToManyField(User, related_name='liked_news', verbose_name='点赞用户')
reply = models.BooleanField(default=False, verbose_name='是否为评论')
created_at = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
updated_at = models.DateTimeField(auto_now=True, verbose_name='更新时间')
class Meta:
verbose_name = '首页'
verbose_name_plural = verbose_name
ordering = ('-created_at',)
def __str__(self):
return self.content
def switch_like(self, user):
"""点赞或取消赞"""
if user in self.liked.all():
self.liked.remove(user)
else:
self.liked.add(user)
def get_parent(self):
"""返回自关联中的上级记录或者本身"""
if self.parent:
return self.parent
else:
return self
def reply_this(self, user, text):
"""
回复首页的动态
:param user: 登录的用户
:param text: 回复的内容
:return: None
"""
parent = self.get_parent()
News.objects.create(
user=user,
content=text,
reply=True,
parent=parent
)
def get_thread(self):
"""关联到当前记录的所有记录"""
parent = self.get_parent()
return parent.thread.all()
def comment_count(self):
"""评论数"""
return self.get_thread().count()
def count_likers(self):
"""点赞数"""
return self.liked.count()
def get_likers(self):
"""所有的点赞用户"""
return self.liked.all()
写回答
2回答
-
Otiose
提问者
2021-01-01
问题解决了,原来是模型中的uuid.uuid4()出了问题,去掉括号就解决了……老师我这里顺便问一下这里加不加括号的区别是什么呢?毕竟之前一直带着这个错误也是可以实现功能的
012021-01-01 -
Jack
2020-12-31
您好,报错内容是说主键有重复值,可能是模型类哪些写错了,麻烦贴一下news/models.py的完整代码,用代码插入格式哈。
另外,返回动态的评论是这样的:
但这个不像是报错原因
032021-01-01
相似问题
发送消息,即时显示报错
回答 1