python - 以 django 形式使用 url 中的 pk

标签 python django django-forms

在我的 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/

相关文章:

python - 使用 nautilus 脚本转义路径中的空格

python - 在 virtualenv 中运行 bpython

python - AppEngine remote_api stub 调用上的 BadRequestError

javascript - Django 模板,在单击按钮时调用类内的函数

Django 错误 : __init__() got multiple values for keyword argument 'max_length'

Django - 更改内联表单集文本输入大小属性

django - 当 DjangoAdmin 是带有change_view 的 ModelAdmin 时,如何为 DjangoAdmin 抛出 ValidationError

python - 如果其他单元格包含 'something',如何在 2 个单元格中设置值

python - 如何在 django admin 中添加编辑和删除按钮

python - 通过 Django 模板检测模板中使用的语言