如何在Django中使用基于pk的值预填充文本字段

时间:2018-11-26 13:53:21

标签: django django-forms populate

具有预购和产品模型,我创建了一个嵌入式表单集。 客户可以进行预订(FK)。

此嵌入式表单集的目标是在文本字段中仅一个预先填充的值,而不是所有值。

我期望的预填充值与客户的pk有关。

这是我的观点:

class PreorderProductCreateView(LoginRequiredMixin, CreateView):
    model = Preorder
    fields=['preorder_date','client']
    template_name='test/test.html'


def get_context_data(self, **kwargs):
    data = super(PreorderProductCreateView, self).get_context_data(**kwargs)
    data['client']=Client.objects.filter(pk=self.kwargs.get('pk')) #
    print(Client.objects.filter(pk=self.kwargs.get('pk')))#

    if self.request.POST:
        data['formset'] = PreorderProductFormSet(self.request.POST)#bound the formset with data

    else:
        data['formset'] = PreorderProductFormSet()#empty formset

    return data

def form_valid(self, form):
    context = self.get_context_data()
    formset = context['formset']
    with transaction.atomic():
        self.object = form.save()

        if formset.is_valid():
            formset.instance = self.object
            formset.save()
    return super(PreorderProductCreateView, self).form_valid(form)



def get_success_url(self, **kwargs):
    return reverse('client_list')

我可以成功获取当前客户端的pk,但无法将返回的客户端对象提供给我的数据字典,最终无法仅加载所需的客户端对象。

这是我的网址:

url(r'^preorders/edit/(?P<pk>\d+)/$', views.PreorderProductCreateView.as_view(), name='preorder_edit'),

有什么建议吗?

0 个答案:

没有答案