簡體   English   中英

以 Django 形式使用來自 url 的 pk

[英]Use pk from url in django form

在我的 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')

視圖.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')

我能夠訪問pk的看法按功能self.kwargs['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方法以將初始數據傳遞給表單:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM