我试图在基于类的视图中设置初始名称,以使用name = description预先填充文本输入
下面的代码似乎接受了所指定的url中的整数输入,并将其放在模板中所需的位置。
#urls.py
urlpatterns += (
path('repair/', views.RepairListView.as_view(), name='app_name_repair_list'),
path('repair/create/<int:pk>', views.RepairCreateView.as_view(), name='app_name_repair_create'),
)
# views.py
class RepairCreateView(CreateView):
model = Repair
form_class = RepairForm
def get_context_data(self, **kwargs):
context = super(RepairCreateView , self).get_context_data(**kwargs)
self.initial['description'] = self.kwargs['pk']
return context
但是在浏览器中访问时...
访问:/ repair / create / 1 文字输入包含:1
访问:/ repair / create / 2 文本输入包含:1(再次)
访问:/ repair / create / 3 文字输入包含:2
(依此类推)
我在这里做过明显错误的事情还是这是一种奇怪的错误?我基本上计划在网站上的其他地方使用URL,以便用户单击以加载此表单,从而用该URL中的已知信息填充表单。
答案 0 :(得分:2)
initial
是所有实例共享的类属性。您不应该修改它。
相反,您应该定义get_initial
方法,并返回一个新字典:
def get_initial(self):
return {'description': self.kwargs['pk']}