在我的 django 应用程序中,我有一个表格,其中包含一个按钮,可将您重定向到如下形式:
<a href="{% url 'employee:delivered_docket_form' docket.pk %}" class="btn btn-primary">Create Delivered Docket</a>
网址.py
path('delivered-docket/add/<int:pk>/', DeliveredDocketFormView.as_view(),
name='delivered_docket_form')
View .py
@method_decorator([login_required, employee_required], name='dispatch')
class DeliveredDocketFormView(CreateView):
model = DeliveredDocket
form_class = DeliveredDocketeditform
template_name = 'packsapp/employee/docketDeliveredForm.html'
def form_valid (self, form):
product = form.save(commit=False)
product.save()
data = form.cleaned_data
print("form data is ", data)
print("pk is ",self.kwargs['pk'])
messages.success(self.request, 'The Delivered Docket was created with success!')
return redirect('employee:delivered_docket_table')
我可以通过self.kwargs['pk']
访问 View 函数中的pk
,但是如何在formclass中访问它。这是我的表格
表单.py
class DeliveredDocketeditform(forms.ModelForm):
class Meta:
model = DeliveredDocket
fields = '__all__'
我想在表单中添加如下内容:
class DeliveredDocketeditform(forms.ModelForm):
class Meta:
model = DeliveredDocket
fields = '__all__'
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['sender'].queryset = Warehouse.objects.id(id = ??)
如何获得此查询的 pk?
最佳答案
您可以覆盖 get_initial
您 View 中的方法将初始数据传递到表单:
class DeliveredDocketFormView(CreateView):
model = DeliveredDocket
form_class = DeliveredDocketeditform
template_name = 'packsapp/employee/docketDeliveredForm.html'
def get_initial(self):
initial = super().get_initial()
initial['sender'] = Warehouse.objects.get(pk=self.kwargs['pk'])
return initial
关于python - 以 django 形式使用 url 中的 pk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60275628/