我有以下模型:
class Poster(models.Model)
user = models.OneToOneField(User, primary=True)
userpicture = models.CharField(max_length = 128 =True)
class Posts(models.Model)
poster = models.ForeignKey(Poster, related_name = 'post_owner')
url = models.CharField(max_length = 128)
time = models.DateTimeField(auto_now_add=True)
class Comment(models.Model):
user = models.ForeignKey(Poster)
post = models.ForeignKey(Posts)
time = models.DateTimeField(auto_now_add=True)
comment = models.CharField(max_length=140)
一个用户可以发表文章,其他用户可以在该文章下评论,有点像博客的工作方式。我希望让文章所有者有权删除他自己的评论以及其他用户在他的文章下的评论。
我应该如何实现这个功能呢?
我目前正在使用 Django Tastypie。这是我的当前资源:
class DeleteComment(ModelResource):
class Meta:
queryset = Comment.objects.all()
allowed_methods = ['delete']
resource_name = 'comment-delete'
excludes = ['id', 'comment', 'post', 'time']
authorization = Authorization()
authentication = BasicAuthentication()
include_resource_uri = False
always_return_data = True
这个可以工作!但是,它允许任何用户删除任何评论,即使不是他们自己的评论,这是不好的!怎么办呢?
只需向以下地址发送DELETE请求:myapp.com:8000/v1/posts/comment-delete/8/,它将删除id为8的Comment对象。这就是设置失败的地方。
我需要一种方法,只有帖子所有者才能删除他在帖子上发表的评论以及其他人的评论。
True
,则对象将在obj_delete
方法中被删除。 如果返回False
,则对象不会在obj_delete
方法中被删除。obj_delete
方法用于实际删除对象,delete_detail
决定是否要删除。 - Nick Brady