繁体   English   中英

如何从 django 中的数据库中删除单个数据(不删除整行)

[英]How to delete a single data from database in django (not deleting the entire row)

为了让您了解我的问题,我先展示我的代码,然后再展示我的问题。

在模型.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)

我需要从 object post中的liked_by列中删除request.user 但是会出现这个错误:

AttributeError:“用户”object 没有属性“删除”

我该如何解决这个问题?

您可以将字段值设置为 None,这实际上删除了 post model 实例和用户 model 之间的关联。

您不需要 request.user,因为关系是多对一的(后 model 实例只能与一个用户相关)。

post.liked_by = None
post.save()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM