【发布时间】:2017-08-25 18:00:23
【问题描述】:
我希望最初使用来自另一个应用程序的数据填充我的 Django 表单。为了编写我的函数,我遵循了这个 SO 示例:
Initial populating on Django Forms
但是,我没有成功得到我想要的东西。这是我的功能应该做的:
我有一个名为:Person 的模型,其中包含大量信息(名字,...)和一个非常有用的 unique number,以便区分每个人。
然后,我有另一个名为BirthCertificate 的模型,它带有一个表格,用于创建出生法案。在我的表单视图中,用户给出了这个unique number,Django 能够搜索好人(不难)并最初填充我的表单(在 Person.model 和 BirthCertificate.model 之间有一些公共字段)。
我有两个步骤:
- 首先:用户写个人的唯一编号
- 第二:用户写父母的唯一号码
我提交了这些信息,第一步应该首先填充公共字段。第二步效果很好。
这是我的功能,但有些东西仍然无法正常工作:
def BirthCertificate_Form_unique_number(request) :
#User fill some fields
query_social_number = request.GET.get('social_number')
query_social_number_father = request.GET.get('social_number_father')
query_social_number_mother = request.GET.get('social_number_mother')
if query_social_number :
query_social_number_list = Person.objects.filter(social_number=query_social_number)
if query_social_number_list:
sc_obj = query_social_number_list[0]
#For example : sc_obj.lastname will extract lastname
# etc ...
else :
query_social_number_list = Person.objects.none()
initial_data = {
'lastname': sc_obj.lastname,
'firstname': sc_obj.firstname,
'birthday': sc_obj.birthday,
'sex' : sc_obj.sex,
'birthcity': sc_obj.birthcity
}
form = BirthCertificateForm(request.POST or None, initial=initial_data)
if form.is_valid() : # Check data
post = form.save()
return HttpResponseRedirect(reverse('BC_treated', kwargs={'id': post.id}))
else:
form = BirthCertificateForm()
parent1 = Person.objects.filter(social_number=query_social_number_father)
parent2 = Person.objects.filter(social_number=query_social_number_mother)
form = BirthCertificateForm(request.POST or None)
form.fields['fk_parent1'].queryset = parent1
form.fields['fk_parent2'].queryset = parent2
context = {
"form" : form,
"person" : person,
}
return render(request, 'BC_form2.html', context)
我如何重新组织关于query_social_number 的部分?
谢谢
【问题讨论】:
标签: python django forms django-forms django-views