首先,我想说我真的是Django的新手,正在为我的项目寻找一些架构建议。
当用户单击“保存”按钮时,需要将输入字段中的数据保存到数据库中。用户将不断用新值更新这些输入字段,并且在某些情况下,数据库中将不存在这些数据,因为用户尚未填写它们。问题是,我不确定要使用哪种查看方法。
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部分,但是仍然有可能根本没有插入信息。
我应该怎么做?
答案 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 ...
]