2016-04-12 20 views
0

Basit bir sorunla ilgili olarak yardıma ihtiyacım var. Birime bir bölüm eklemek için bir form yazıyorum. Ünite endekslerle (indeksler) sıralanmış X bölümlerine bağlı olacaktır.Django ile göndermeden önce bir form için değerler nasıl eklenir?

Birim_id bölümünü bölüme iletmeye çalıştığımda sorun ortaya çıkıyor. Bir bölüm eklemek için kullanıcının birim ekranından geçmesi gerekeceğinden, otomatik olarak atanmasını istiyorum, URL'de de olacak.

Kullanıcı tarafından girilen değeri gönderdikten sonra bunu model formuna eklerken sorunlarla karşılaşıyorum.

def section_modify(request, unit_id, section_id=None): 
    unit = get_object_or_404(Models.Unit, id=int(unit_id)) 
    if section_id is not None: 
     section = get_object_or_404(Models.Section, id=int(section_id)) 
    else: 
     section = None 
    if request.method == "POST": 
     form = F.SectionForm(request.POST, instance=section) 
     if form.is_valid(): 
      # I tried this part, but it didn't work: 
      # form.save(commit=False) 
      # form.unit_id = unit_id 
      form.save() 
     return HttpResponseRedirect('') 
    else: 
     form = F.SectionForm(instance=section) 
    return render(request, 'sectionEdit.html', {'form': form}) 

Bunu yapmanın en az korkunç yolunu arıyorum django yolu.

Herhangi bir yardım çok takdir edilmektedir. Zaman ayırdığın için teşekkürler.

cevap

1

deneyin böyle unit_id eklemek için:

if form.is_valid(): 
    # section will get unsaved model instance 
    # so you can assign property value and then save 
    section = form.save(commit=False) 
    section.unit_id = unit_id 
    section.save() 

* *

def section_modify(request, unit_id, section_id=None): 
    unit = get_object_or_404(Models.Unit, id=int(unit_id)) 
    if section_id is not None: 
     section = get_object_or_404(Models.Section, id=int(section_id)) 
     if section: 
      section.unit_id=unit.pk 
      section.save() 
    else: 
     section = None 
    if request.method == "POST": 
     form = F.SectionForm(request.POST, instance=section) 
     if form.is_valid(): 
      if section: 
       form.save() 
      else: 
       section = form.save(commit=False) 
       section.unit_id=unit.pk 
       section.save() 
     return HttpResponseRedirect('') 
    else: 
     form = F.SectionForm(instance=section) 
    return render(request, 'sectionEdit.html', {'form': form}) 

yüzden bölüm örneği başka kendisine unit_id eklenecek form gönderme sonra unit'id eklemek varsa GÜNCELLEME.

+0

Bunu denedim, ama işe yaramadı. –

İlgili konular