Как удалить отдельные данные из базы данных в django (не удаляя всю строку)

Чтобы дать вам понимание моей проблемы, я сначала показываю свой код, а затем свой вопрос.

В models.py:

class Post(models.Model):
    content = models.CharField(max_length=140)
    date_created = models.DateTimeField(auto_now_add=True)
    poster = models.ForeignKey(User, on_delete=models.CASCADE)
    likes = models.IntegerField(default=0)
    liked_by = models.ForeignKey(
        User, on_delete=models.CASCADE, related_name='liked_by', blank=True, null=True)

  
    def serialize(self):
        return {
            "id": self.id,
            "poster": self.poster.username,
            "poster_image_url": self.poster.image_url,
            "date_created": self.date_created.strftime("%b %d %Y, %I:%M %p"),
            "content": self.content,
            "likes": self.likes,}

В views.py:

 @csrf_exempt
    def get_post(request, post_id):
        post = Post.objects.get(pk=post_id)
        if request.method == "GET":
            return JsonResponse(post.serialize())
        elif request.method == "PUT":
            data = json.loads(request.body)
            if data.get('likes') is not None:
                if data['likes'] > post.likes:
                    post.likes = data['likes']
                    post.liked_by = request.user
                else:
                    post.likes = data['likes']
                    post.liked_by.remove(request.user)
        post.save()
        return HttpResponse(status=204)

Мне нужно удалить request.user из liked_by столбца в post объекте. Но возникает эта ошибка:

AttributeError: объект 'User' не имеет атрибута 'remove'

Как я могу решить проблему?

Вы можете установить значение поля на None, что фактически удалит связь между экземпляром модели поста и моделью пользователя.

Вам не нужен request.user, так как отношение многие-к-одному (экземпляр модели post может быть связан только с одним пользователем).

post.liked_by = None
post.save()
Вернуться на верх