Как удалить отдельные данные из базы данных в 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()