2013-08-28 18 views
19

django bir gönderme düğmesi ile iki farklı form göndermek mümkün mü? "Enstrüman" ve 4 eşit form "config" adı verilen bir form var. şimdi her zaman bir yapılandırma ve enstrüman göndermek istiyorum. Örneğin. cihaz + yapılandırma 1 ve cihaz + yapılandırma 2. ve her yapılandırmanın kendi gönderme düğmesi vardır.django iki farklı form göndermek için bir gönderme düğmesi ile

i yapılandırma şeklinde bir düğme ile denedim:

<input onclick="submitForms()" class="btn btn-primary cfg" type="submit" value="Start" > 

ve 'onclick' bir js işlevi çağırmak: Bu views.py benim yöntem

submitForms = function(){ 
    console.log('ok'); //only for testing 
    document.forms["firstForm"].submit(); 
    document.forms["secondForm"].submit(); 
} 

geçerli:

Bunun yerine html multipl <form ..> etiketlerini sahip
if request.method == 'POST': 
     form1 = dataproviderInstrumentForm(request.POST) 
     form2 = dynamicTimeseriesForm(request.POST) 
     print(request.POST) 
     if form1.is_valid() or form2.is_valid(): 
      # do some stuff 

else: 
    form1 = dataproviderInstrumentForm() # an unbound form 
    form2 = dynamicTimeseriesForm() # an unbound form 
+0

olası yinelenen yapabilirim [I django tek Gönder düğmesini ile birden formları göndermek nasıl?] (Http://stackoverflow.com/questions/15124567/how-do- i-submit-çoklu-form-ile-bir-tek-göndermek-düğme-in-django) –

+0

evet bu yazı gördüm, ancak bir js fonksiyonu ile bir formset olmadan bunu yapmak mümkün değil mi? – user2412771

cevap

38

, tekkullanmak 0 etiketleyin ve altındaki tüm formların alanlarını ekleyin. Kullanıcı formu gönderdiğinde

<form > 
    {{ form1.as_p }} 
    {{ form2.as_p }} 
    {{ form3.as_p }} 
</form> 

şablona

yılında

Örnek Yani o zaman görünümünde ne yaptığını yapabilir, görünümdeki tüm formlar verileri elde edersiniz.

if request.method == 'POST': 
     form1 = Form1(request.POST) 
     form2 = Form2(request.POST) 
     print(request.POST) 
     if form1.is_valid() or form2.is_valid(): 

olarak onun daha iyi gibi durumlarda form prefix kullanmak.

Yani sen

if request.method == 'POST': 
     form1 = Form1(request.POST,prefix="form1") 
     form2 = Form2(request.POST,prefix="form2") 
     print(request.POST) 
     if form1.is_valid() or form2.is_valid(): 
else: 
     form1 = Form1(prefix="form1") 
     form2 = Form2(prefix="form2") 
+0

Bu, tüm formları bir kerede gönderirsem iyi görünüyor, ancak aynı anda bir yapılandırma formu ve enstrüman formu göndermek istiyorum. Bu yüzden eğer ikinci konfigürasyon formunu kendi gönder butonu ile gönderirseniz, enstrüman formu da göndermelidir. ve diğer 3 yapılandırması için gönderme düğmesi aynı şeyi yapmalıdır. her zaman tıklattığım gönder butonunu ve cihaz formunu gönderin. – user2412771

İlgili konular