Django-我的案子应使用哪种CBV?

时间:2018-07-18 13:15:01

标签: django django-views views

首先,我想说我真的是Django的新手,正在为我的项目寻找一些架构建议。

我有一个看起来像这样的前端模板: enter image description here

当用户单击“保存”按钮时,需要将输入字段中的数据保存到数据库中。用户将不断用新值更新这些输入字段,并且在某些情况下,数据库中将不存在这些数据,因为用户尚未填写它们。问题是,我不确定要使用哪种查看方法。

views.py

class BhaCreateView(CreateView):
    model = models.bha
    fields = '__all__'
    context_object_name = 'bha'
    template_name = 'base/bha.html'

这只是我编写的一个非常粗糙的代码,只在这里问一个问题。 我知道有许多种基于类的视图,例如DetailView,ListView,CreateView,UpdateView ...等。我应该使用哪一个或哪些目的?我在想我需要将CreateView和UpdateView结合起来,因为用户会将新信息更新到BHA部分,但是仍然有可能根本没有插入信息。

我应该怎么做?

1 个答案:

答案 0 :(得分:3)

通常,您应该同时拥有一个CreateView和一个UpdateView

因此,如果用户最初希望通过单击链接Add new BHA创建BHA,则应将他定向到将由yourDomain.com/bha/create处理的URL CreateView。当他保存时,应将他重定向到另一个yourDomain.com/bha/1/edit处理的URL UpdateView,其中URL中的1是新创建的数据库条目的主键。只能通过该URL对该实例进行更新。

两个视图通常可以使用大约相同的模板,但是UpdateView最初将使用URL中ID标识的模型实例中的数据填充表单。

因此您的url配置可能如下所示:

urlpatterns = [
    url(r'^bha/', include([
        url(r'^create/$', BHACreateView.as_view(), name='create'),
        url(r'^(?P<pk>\d+)/edit/$', BHAUpdateView.as_view(), name='update'),
    ], namespace='bha')),

    # other urls ...
]