Django - 我应该为我的案例使用什么 CBV?

Django - What CBV should I use for my case?

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

我有一个如下所示的前端模板:

当用户点击"save"按钮时,输入字段中的数据需要保存到数据库中。用户将不断用新值更新这些输入字段,并且会出现 none 这些数据存在于数据库中的情况,因为用户尚未填写它们。问题是,我不确定使用什么查看方法。

views.py

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

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

我应该怎么做?

通常你应该同时拥有 CreateViewUpdateView

因此,如果用户最初想通过单击 link Add new BHA 创建 BHA,他应该被引导至 url yourDomain.com/bha/create,它将由CreateView。当他保存时,他应该被重定向到另一个 url yourDomain.com/bha/1/edit,它将由 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 ...
]