2010-02-04 10 views
6

मेरे पास मेरे Django ऐप में एक मॉडलफॉर्म है जो एक फॉर्म का उपयोग करता है। मॉडेल मल्टीप्लस चॉइसफ़िल्ल्ड, जो फ़ॉर्म के रूप में प्रदर्शित होता है। फॉर्म पर चेकबॉक्स चयन करें। इस मॉडलफॉर्म का उपयोग कई से अधिक संबंधों के लिए मूल्यों का चयन/चयन करने के लिए किया जाता है। यहां समस्या है: जब आप सभी चेकबॉक्स अनचेक करते हैं और फॉर्म को सहेजते हैं, तो यह सहेजता नहीं है। यदि आप 1 को छोड़कर सभी को अनचेक करते हैं, तो यह ठीक से सहेजता है।फॉर्मों का उपयोग करके Django मॉडल फॉर्म। मॉडेल मल्टीप्लस चॉइसफ़िल्ल्ड

क्या कोई चाल है जो मैं यहां मॉडल रूपों और कई से अधिक संबंधों के बारे में याद कर रहा हूं? क्या मुझे एक बग का सामना करना पड़ रहा है? मैं Django के लिए नया हूँ। अग्रिम में धन्यवाद।

कस्टम फ़ील्ड:

class NetworkMessageChoiceField(forms.ModelMultipleChoiceField): 
    def label_from_instance(self, obj): 
     return obj.display_message  

मॉडल प्रपत्र:

def save_message_templates(request, extra_context=dict()): 
    try: 
     profile_obj = request.user.get_profile() 
    except ObjectDoesNotExist: 
     profile_obj = UserProfile(user=request.user) 

    if request.method == 'POST': 
     form = MessageTemplateForm(request.POST, instance=profile_obj) 
     if form.is_valid(): 
      form.save() 
      return redirect('/') 

    return index(request, message_template_form=form) 

संपादित करें::

मेरे लिए

class MessageTemplateForm(forms.ModelForm): 
    network_messages = NetworkMessageChoiceField(queryset=NetworkMessageTemplate.objects, 
              widget=forms.CheckboxSelectMultiple())   
    class Meta: 
     model = UserProfile 
     fields = ('network_messages',) 

देखें कि प्रपत्र की बचत होती है आरएम क्षेत्र गायब था = गलत।

class MessageTemplateForm(forms.ModelForm): 
    network_messages = NetworkMessageChoiceField(queryset=NetworkMessageTemplate.objects, 
               widget=forms.CheckboxSelectMultiple(), 
               required=False)   
    class Meta: 
     model = UserProfile 
     fields = ('network_messages',) 

उत्तर

0

आप पेस्ट नहीं किया अपने मॉडल कैसा दिखता है, इसलिए मैं अनुमान लगा रहा हूँ कि अपने मॉडल में network_messages क्षेत्र आवश्यक है। यदि ऐसा है, तो जब आप उस फ़ील्ड के मान के साथ फॉर्म को NULL (खाली) के रूप में सबमिट करने का प्रयास करते हैं, तो form.is_valid()True वापस नहीं लौटा रहा है और इसलिए आपका form.save() कभी निष्पादित नहीं किया जा रहा है।

क्या आपने इस सामग्री को एक इंटरैक्टिव खोल से निष्पादित करने का प्रयास किया है, फ़ॉर्म को तुरंत चालू किया है और इसे मैन्युअल रूप से save() करने का प्रयास किया है?

+0

धन्यवाद! वह पूरी तरह से जवाब था। मैंने अभी अपना प्रश्न पोस्ट करने के बाद इसे समझ लिया। मैं अपने फार्म फ़ील्ड पर आवश्यक = गलत था! \t वर्ग MessageTemplateForm (forms.ModelForm): \t \t network_messages = NetworkMessageChoiceField (क्वेरीसमूह = NetworkMessageTemplate.objects, \t \t \t \t \t \t \t \t \t \t \t \t \t विजेट = forms.CheckboxSelectMultiple(), \t \t \t \t \t \t \t \t \t \t \t \t \t आवश्यक = false) \t \t वर्ग मेटा: \t \t \t मॉडल = UserProfile \t \t \t क्षेत्रों = ('network_messages',) – Rob

+0

बहुत बढ़िया! सेवा का होकर ख़ुशी है। – jathanism

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