0
Django get_initial未在表单中填充产品字段。我期待一个下拉菜单,查询结果在get_initial覆盖函数中定义。Django get_initial不工作
class PurchaseRequestDetailForm(forms.ModelForm):
class Meta:
model = PurchaseRequestDetail
fields = ["product", "variations", "quantity", "fulfilled", "vat", "discount", "surcharges", "active"]
exclude = ("purchase_request",)
class PurchaseRequestDetailCreateView(CreateView):
model = PurchaseRequestDetail
form_class = PurchaseRequestDetailForm
template_name = "inventory/purchaserequestdetail_form.html"
def get_pr_obj(self):
pr_id = self.request.session["pr_id"]
return PurchaseRequest.objects.get(id=pr_id)
def get_initial(self):
initial = super(PurchaseRequestDetailCreateView, self).get_initial()
try:
pr_obj = self.get_pr_obj()
initial["product"] = pr_obj.vendor.vendors_products.all()
except KeyError:
pass
self.form_class(initial)
return initial
模板:
<td>{{ form.product|css_class:"form-control" }}</td>
这不是多余的吗? – tilaprimera
如果kwargs [“initial”]中的“product”抛出KeyError – tilaprimera
@tilaprimera我刚看过'CreateView'并且没有'get_initial'方法。这可能只属于'UpdateView'。我会更新我的答案。 –