[英]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.