2011-04-01 18 views
15

Umarım bu soru henüz sorulmamıştır, ancak bir nesne için normal bir sınıfa dayalı bir forma sahip olmanın mümkün olup olmadığını bilmek ve ilgili nesnelerini düzenlemek için içinde bir inline formset'in olup olmadığını bilmek istiyorum.Django'da bir form içinde iç içe bir satır içi form kümesi nasıl kullanılır?

Örneğin, ben bir irtibat modeli
class Contact(models.Model):
...

Ve Haberleşme modeli
class Communication(models.Model):
contact = models.ForeignKey(Contact)

var ve ilgili iletişimi yönetmek için içinde yuvalanmış bir satır içi formset Kişiniz için bir form var istiyorum ona.

Mevcut bileşenlerle bunu yapmak mümkün mü yoksa umutsuz bir rüyam var mı?

DÜZENLEME: Yönetici panelinin bunu yaptığını biliyorum, ancak bir görünümde nasıl çalışırım?

cevap

14

Tabii ki bu mümkün müdür - yöneticinin bunu nasıl yaptığını düşünüyorsunuz?

inline formsets documentation'a bir bakın.

Yorum yapıldıktan sonra düzenlenmiş Tabii ki, hem ana form hem de iç içe form kümesi oluşturmalısınız. muhtemelen bunu işlemek nasıl biraz daha detaylı olmak isteyeceksiniz rağmen

<form action="" method="POST"> 
    {{ form.as_p }} 
    {{ formset }} 
</form> 

: şöyle birşey:

def edit_contact(request, contact_pk=None): 
    if contact_pk: 
     my_contact = Contact.objects.get(pk=contact_pk) 
    else: 
     my_contact = Contact() 
    CommunicationFormSet = inlineformset_factory(Contact, Communication) 
    if request.POST: 
     contact_form = ContactForm(request.POST, instance=my_contact) 
     communication_set = CommunicationFormSet(request.POST, 
               instance=my_contact) 
     if contact_form.is_valid() and communication_set.is_valid(): 
      contact_form.save() 
      communication_set.save() 
    else: 
     contact_form = ContactForm(instance=my_contact) 
     communication_set = CommunicationFormSet(instance=my_contact) 

    return render_to_response('my_template.html', 
           {'form': contact_form, 'formset':communication_set}) 

ve şablon olarak basit olabilir.

+0

Hızlı yanıt için teşekkürler, ama denedim ve form kümesini oluşturduğumda, ilgili nesneler için yalnızca çizgiler var. İletişim formuna ve İletişim Inline form setine ihtiyacım var. Yönetici panelinin bunu yaptığını biliyorum, ancak bir görünümde nasıl çalışırım? –

+0

Teşekkürler bir çekicilik gibi çalıştı! –

+0

Formülü ana forma eklemenin herhangi bir yolu var mı? Bazı nedenlerden dolayı sadece tek bir model formuna sahip olabilirim ve içinde bir satır içi çizgiye ihtiyacım var. –

İlgili konular