重复的键值违反了唯一约束 Django



我在创建应用程序时遇到了这个问题。 因此,每当我添加第一条评论时,问题都没有出现,但是当我第二次尝试这样做时,我会收到此错误:

重复的键值违反了唯一约束 "tripplanner_discussion_author_id_key"详细信息:键 (author_id)=(1) 已经存在。

我试图unique=Falsemodels.py,但根本没有帮助。

models.py

class Discussion(models.Model):
author = models.OneToOneField(User, on_delete=models.CASCADE, unique=False)
group = models.ForeignKey(Trip, on_delete=models.CASCADE, unique=False)
text = models.TextField()
created_date = models.DateTimeField(default=timezone.now)

views.py

class DiscussionView(LoginRequiredMixin, CreateView):
model = Discussion
template_name = 'tripplanner/discussion.html'
fields = ['text']
success_url = '/'
def form_valid(self, form):
form.instance.author = self.request.user
form.instance.group = self.trip
return super(DiscussionView, self).form_valid(form)

更新

当我登录到另一个用户时,一个帖子的问题消失了,然后又出现了。所以要解决的问题是让这个author_id独一无二。

In Django

一对一的关系。从概念上讲,这类似于具有唯一=真

如果您检查源代码OneToOneField.,它将unique设置为init

我认为你应该使用ForeignKey而不是OneToOne.

尝试删除unique = False然后进行迁移和迁移。 如果已经存在迁移并删除该应用程序的迁移和缓存,并在管理页面中删除该 ID,那么这样做可能会起作用

最新更新