Из-за чего происходит ошибка «ограничение внешнего ключа» в django?

Реализовал систему лайков и добавление в избранное. Когда ставлю лайк, появляется ошибка "IntegrityError at /like_topic/1/FOREIGN KEY constraint failed". Код прилагаю ниже. views.py

    def like_topic(request, id):
         if request.method == 'POST':
             topic = Topic.objects.get(id=id)
             if topic.likes.filter(id=request.user.id).exists():
                 topic.likes.remove(request.user.id)
             else:
                 topic.likes.add(request.user.id)
         return HttpResponseRedirect(request.META.get('HTTP_REFERER'))

     def favorite_add(request, id):
         topic_favorite = get_object_or_404(Topic, id=id)
         if topic_favorite.favourites.filter(id=request.user.id).exists():
              topic_favorite.favourites.remove(request.user)
         else:
              topic_favorite.favourites.add(request.user)
         return HttpResponseRedirect(request.META['HTTP_REFERER'])



    def favouritie_list(request):
        new = Topic.newmanager.filter(favourites=request.user.id)
        return render(request, 'favourites/favourite.html', {'new': new})

Ошибка в строке topic.likes.add(request.user.id)

models.py

    class Topic(models.Model):
        class NewManager(models.Manager):
              def get_queryset(self):
                   return super().get_queryset().filter(status='published')

     options = (
           ('published', 'Published'),
            )

           name = models.CharField(max_length=200)
           category = models.ForeignKey(
            Category, verbose_name="Category", on_delete=models.SET_NULL, null=True, 
            related_name='topic'
               )
            content = models.TextField()
            likes = models.ManyToManyField(User, related_name='topic_likes', 
            default=None, blank=True)
            created = models.DateField(auto_now=False)
           tags = TaggableManager()
           slug = models.SlugField(max_length=130, unique=True)
           author = models.ForeignKey(User, on_delete=models.CASCADE)
           favourites = models.ManyToManyField(User, related_name='favorite', 
           default=None, blank=True)
           newmanager = NewManager()  # custom manager
           excerpt = models.TextField(null=True)
           objects = models.Manager()
           status = models.CharField(max_length=10, choices=options, default='draft')

          def __str__(self):
              return self.name

         def total_likes(self):
             return self.likes.count()

        def get_absolute_url(self):
          # return reverse("forum:topic_detail", kwargs={"slug": self.url})
            return reverse_lazy('forum:topic_detail', kwargs={'slug': self.slug})

      def tag_list(self) -> str:
          return u", ".join(o.name for o in self.tags.all())

     class Meta:
           verbose_name = 'Topic'
           verbose_name_plural = 'Topics'
    

    
Вернуться на верх