更新对象的通用视图?

时间:2018-02-05 01:15:55

标签: python django generics django-views

如何重写基于函数的视图,只将对象更新为基于类的视图?像这样的东西(为教程写了这个)。

from django.contrib.auth.decorators import permission_required
@permission_required("catalog.mark_returned")
def mark_returned(request, pk):
    bk = BookInstance.objects.get(pk=pk)
    if bk.status == "a":
        #some tests here
    bk.status = "a"
    bk.due_back = None
    bk.borrower = None
    bk.save()
    return redirect("on-loan")

总的来说,将泛型用于那样的事情是否有意义? 因为目前,我只使用通用列表和详细视图。 对不起初级问题:)

1 个答案:

答案 0 :(得分:0)

这是一个没有模板或表格的视图;除了基本的View类本身之外,有点排除了几乎所有通用视图的用处。 您可以使用功能视图的逻辑覆盖 C lass B ased V iew的调度方法(因为请求方法无关紧要)。 可以通过self.args[0]self.kwargs['_name_of_captured_variable_here']访问pk值。

有意义吗?总的来说,我会说熟悉CBV,特别是通用的那些对你来说会长期保持良好状态。但是,在您的特殊情况下,通过在功能视图上使用CBV可以获得或者失去任何东西。这种观点太过简单了。