我正在尋找最初使用基於其他應用的數據填充我的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我正在通過我的答案。您是否認爲此答案有幫助?小心接受? –