我正在尝试编写一个视图方法来响应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)
答案 0 :(得分:0)
你几乎就在那里。 request.user
是django.utils.SimpleLazyObject
的一个实例,因此您无法对request.user
与CharField进行==比较,其值为封面下的字符串
您需要执行以下操作:
if request.user.username == targetobject.author:
targetobject.delete()
或只使用User
对象中的任何字段与Entry.author
同义。
答案 1 :(得分:0)
我说你的模特错了。 author
应该是auth.User模型的ForeignKey。然后您的比较将起作用(对==
的更改),并且在按用户属性进行分组和查询方面也有其他好处。