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

#python #django #django-models

#питон #джанго #джанго-модели

Вопрос:

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

В 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'] gt; 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 объекте. Но эта ошибка возникает:

Ошибка атрибута: объект «Пользователь» не имеет атрибута «удалить»

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

Ответ №1:

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

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

 post.liked_by = None post.save()  

Комментарии:

1. Спасибо @yagus, это работает