2012-08-13 18 views
8

मेरे पास Django में दो मॉडल हैं: उपयोगकर्ता (Django द्वारा पूर्व परिभाषित) और UserProfile। दोनों एक विदेशी कुंजी के माध्यम से जुड़े हुए हैं। मैं एक फॉर्म बना रहा हूं जो ग्राहक को अपनी उपयोगकर्ता प्रोफ़ाइल को संपादित करने की अनुमति देता है। इस प्रकार, यह फॉर्म उल्लिखित दोनों मॉडलों पर आधारित होगा।आप django में रूपों के लिए एक सहेजने विधि कैसे लिखते हैं?

मैं इस फ़ॉर्म के लिए एक सेव() विधि कैसे बना सकता हूं? सेव फ़ंक्शन को पूरा करने में चरण/आवश्यकताएं क्या हैं?

class UserChangeForm(forms.Form): 
    #fields corresponding to User Model 
    email = forms.EmailField(required=True) 
    first_name = forms.CharField(max_length = 30) 
    last_name = forms.CharField(max_length = 30) 
    password1 = forms.CharField(max_length=30, widget=forms.PasswordInput) 
    password2 = forms.CharField(max_length=30, widget=forms.PasswordInput) 

    #fields corresponding to UserProfile Model 
    gender = forms.CharField(max_length = 30, widget=forms.Select) 
    year = forms.CharField(max_length = 30, widget=forms.Select) 
    location = forms.CharField(max_length = 30, widget=forms.Select) 

    class Meta: 
     fields = ("username", "email", "password1", "password2", "location", "gender", "year", "first_name", "last_name") 

    def save(self): 
     data = self.cleaned_data 
     # What to do next over here? 

यह एक अच्छी शुरुआत है या किसी को भी इस अप बदलने से पहले हम को बचाने() फ़ंक्शन लेखन शुरू की सिफारिश करेंगे:

यहाँ मैं अब तक forms.py में है क्या है?

+0

का उपयोग नहीं क्यों 'ModelForm's? –

+2

क्या मैं मॉडल मॉडल बना सकता हूं जो दो मॉडल पर आधारित है? यदि हां, तो मैं ऐसा करने के बारे में कैसे जाऊं? – goelv

उत्तर

3

prefix तर्क (ModelForm विरासत द्वारा पर भी) निर्माता के लिए आप एक ही <form> टैग के भीतर कई रूपों डाल दिया और प्रस्तुत करने पर उन दोनों के बीच भेद करने के लिए अनुमति देगा।

mf1 = ModelForm1(prefix="mf1") 
mf2 = ModelForm2(prefix="mf2") 
return render_to_response(..., {'modelform1': mf1, 'modelform2': mf2}, ...) 

...

<form method="post"> 
{{ modelform1 }} 
{{ modelform2 }} 
... 
</form> 
8

इस तुम्हारी मदद कर सकता

def save(self): 
    data = self.cleaned_data 
    user = User(email=data['email'], first_name=data['first_name'], 
     last_name=data['last_name'], password1=data['password1'], 
     password2=data['password2']) 
    user.save() 
    userProfile = UserProfile(user=user,gender=data['genger'], 
     year=data['year'], location=data['location']) 
    userProfile.save() 
+0

बस सीखने/सीखने के लिए, मॉडल के उदाहरणों के रूप में डेटा को सहेजने का उद्देश्य क्या है? क्या वह हर रूप करता है, और यदि ऐसा है तो वह क्यों है? – goelv

+5

केवल आधारित फॉर्म "ModelForm" में एक अंतर्निहित विधि है। "फ़ॉर्म" के आधार पर फ़ॉर्म के लिए, आपको एक सेव विधि बनाना है। [मॉडलफॉर्म] (https://docs.djangoproject.com/en/1.3/topics/forms/modelforms/#the-save-method) – alexander

संबंधित मुद्दे