我正在寻找最初使用基于其他应用的数据填充我的Django表单。我跟着这个SO比如为了写我的功能:Django:从表中提取数据以最初填充表单
Initial populating on Django Forms
不过,我并没有赢得成功得到我想要的东西。这是我的功能应该做的:
我有一个模型被命名为:Person
有很多信息(名字,...)和一个非常有用的unique number
为了区分每个人。
然后,我有另一个模型命名为BirthCertificate
与形式,以创建一个出生法。在我的表单视图中,用户给出了这个unique number
,并且Django能够搜索好人(不难)并且最初填充我的表单(它们在Person.model和BirthCertificate.model之间有一些共同的字段)。
我有2个步骤:
- 第一:用户写人的唯一编号
- 二:用户写父母的唯一编号
我提交此信息的第一步应首先填写共同的领域。第二步工作得很好。
这是我的功能,但是有些事情还是不工作:
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
我的一部分?
谢谢
嗨,@Deadpool我正在通过我的答案。您是否认为此答案有帮助?小心接受? –