私は次のモデルを持っています:
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オブジェクトが削除されます。ここでセットアップが失敗します。
投稿の所有者だけが自分のコメントと自分の投稿に対する他のユーザーのコメントを削除できるようにする方法が必要です。