Django增加视图+ 1

Asi*_*nox 1 django templates models

我不知道为什么这次我不能显示一个项目的"观看次数",我以前这样做但是在这个项目中我不能

def getAuto(request,marca,slug,id):
    from django.db.models import F
    object = get_object_or_404(Robado,marca__slug=marca,modelo__slug=slug,pk=id,publico=True)
    object.views= F('views')+1
    object.save()
Run Code Online (Sandbox Code Playgroud)

template.html

views: {{object.views}}
Run Code Online (Sandbox Code Playgroud)

template.html显示:

 (+: (DEFAULT: ), 1)
Run Code Online (Sandbox Code Playgroud)

我无法想象为什么

谢谢你们

Dan*_*man 5

我认为你不能这样使用F().它用于filter表达式,您可以使用它将一个字段与同一模型上的另一个字段进行比较,也可以在表达式中使用它来update增加字段的位置:

Robado.objects.filter(foo=bar).update(views=F('views')+1)
Run Code Online (Sandbox Code Playgroud)

但我不明白你为什么要在这里使用它,你已经拥有了这个对象.直接引用属性更容易:

object.views = object.views + 1
Run Code Online (Sandbox Code Playgroud)

甚至更简单:

object.views += 1
Run Code Online (Sandbox Code Playgroud)