2010-03-03 14 views
23

जो मैं करने की कोशिश कर रहा हूं वह एक पृष्ठ में कई रूपों का प्रबंधन करना है, मुझे पता है कि फॉर्मेट हैं, और मुझे पता है कि फॉर्म प्रबंधन कैसे काम करता है, लेकिन मुझे इस विचार के साथ कुछ समस्याएं मिलीं दिमाग में।Django - एकाधिक रूपों के साथ काम करना

जरा कल्पना करने के लिए क्या मेरी समस्या मैं Django उदाहरण मॉडल का उपयोग करने के लिए जा रहा हूँ है मदद करने के लिए: अब

from django.db import models 

class Poll(models.Model): 
    question = models.CharField(max_length=200) 
    pub_date = models.DateTimeField() 

class Choice(models.Model): 
    poll = models.ForeignKey(Poll) 
    choice = models.CharField(max_length=200) 
    votes = models.IntegerField(default=0) 

, कल्पना मैं पहले से ही प्रपत्र clases कर दिया है:

from django import forms 
from mysite.polls.models import Poll, Choice 

class PollForm(forms.ModelForm): 
    class Meta: 
     model = Poll 

class ChoiceForm(forms.ModelForm): 
    class Meta: 
     model = Choice 
     exclude = ('poll',) 

तो मैं क्या करना चाहता हूं कि एक पृष्ठ में पोल ​​और चॉइस मॉडल के कई रूप उदाहरण हों, लेकिन ध्यान रखें कि इन मॉडलों को भी दोहराया जा सकता है:

<form action="{{url}}" method="post"> 
    {{pollform}} 
    {{choiceform}} 
    {{pollform}} 
</form> 

जैसा कि आप देख सकते हैं कि दो पोल फॉर्म और एक चॉइस फॉर्म हैं, लेकिन पोल फॉर्म चॉइस फॉर्म से अलग होते हैं। मुझे आवश्यकता है कि फॉर्म पेज में अपना ऑर्डर रखें, इसलिए फॉर्मेट्स का उपयोग करना थोड़ा मुश्किल है।

मुझे मिली समस्या यह है कि पोस्ट में आने वाले मान सभी "उत्तर" नाम से हैं, इसलिए मुझे "उत्तर" नाम से सभी रूपों के सभी तत्वों की एक सूची मिलती है और मैं नहीं कर सकता पहचानें कि कौन से प्रत्येक फॉर्म से संबंधित हैं।

यह नहीं पता कि यह स्पष्टीकरण मेरी समस्या का स्पष्ट दृश्य प्राप्त करता है या नहीं। इस सामान को पूरा करने के लिए कोई विचार?

आपकी मदद के लिए धन्यवाद!

पीडी: पोल और चॉइस के बीच संबंधों पर ध्यान न दें, वे मॉडल केवल प्रोबलेन को स्पष्ट करने के लिए हैं, इसलिए संबंध बिल्कुल कोई फर्क नहीं पड़ता।

उत्तर

51

prefix kwarg

आप के रूप में अपने फार्म घोषणा कर सकते हैं का उपयोग करें:

form = MyFormClass(prefix='some_prefix') 

और फिर, जब तक उपसर्ग है के रूप में ही, के रूप में प्रक्रिया डेटा:

form = MyFormClass(request.POST, prefix='some_prefix') 

Django बाकी संभाल लेंगे।

इस तरह से आप पेज

पर उसी प्रकार के कई रूपों के साथ हो सकते हैं
संबंधित मुद्दे