如何检查用户是否有权删除django中的对象

时间:2015-01-08 17:32:16

标签: ajax django django-views

我正在尝试编写一个视图方法来响应AJAX请求以删除条目。我想在删除该条目之前检查最终用户是否是条目的实际作者。我的" if"声明完成了这个?

VIEWS.PY

latest_entries=Entry.objects.order_by('-pub_date')[:16]

@login_required
def delete_object(request):
   if request.is_ajax():
      object_name = request.POST.get('entryname')
      targetobject = Entry.objects.get(author=object_name)
      if request.user = targetobject.author:
         targetobject.delete() 
      return HttpResponseRedirect('/storefront/')

模型

Class Entry(models.Model):
    author = models.CharField(max_length=30)
    subject = models.CharField(max_length=30)
    description = models.CharField(max_length=30)

2 个答案:

答案 0 :(得分:0)

你几乎就在那里。 request.userdjango.utils.SimpleLazyObject的一个实例,因此您无法对request.user与CharField进行==比较,其值为封面下的字符串

您需要执行以下操作:

if request.user.username == targetobject.author:
    targetobject.delete()

或只使用User对象中的任何字段与Entry.author同义。

答案 1 :(得分:0)

我说你的模特错了。 author应该是auth.User模型的ForeignKey。然后您的比较将起作用(对==的更改),并且在按用户属性进行分组和查询方面也有其他好处。