2016-06-10 94 views
2

我想通過管理端發送短信到用戶選擇的形式的多個選項中的一個,但我無法從select_users場得到的值選擇由管理員完成之後。請幫我解決這個問題。選擇一個有效的選擇。 XXXXXXXX是不是可用選項

這裏是我的代碼

forms.py

class SendSMSForm(forms.ModelForm): 
    select_users = forms.ModelMultipleChoiceField(queryset=SignUp.objects.all(), widget=forms.CheckboxSelectMultiple) 
    class Meta: 
     model = SendSMS 
     fields = ['sms_subject','sms_text'] 
     widgets = { 
     'sms_text': forms.Textarea() 
     } 
    def __init__(self, *args, **kwargs): 
     super(SendSMSForm, self).__init__(*args, **kwargs) 
     self.fields['select_users'].choices = [(str(item.mobile_no), str(item.mobile_no)) for item in SignUp.objects.all()] 

admin.py

class SendSMSAdmin(admin.ModelAdmin): 
    change_form_template = "admin/sms/SmsMarketing/change_form.html" 
    form = SendSMSForm 
    list_display = ['sms_subject','sms_text','date1'] 
    list_filter = ('sms_subject',) 
    def get_form(self, request, obj=None, **kwargs): 
     if request.method == 'POST': 
      form = SendSMSForm(request.POST) 
      if form.is_valid(): 
       subject = form.cleaned_data['sms_subject'] 
       message = form.cleaned_data['sms_text'] 
       ***users = form.cleaned_data['select_users']*** 
       print users 
       obj = SendSMS() 
       for user in users: 
        result = obj.sendsms(message, user) 
        obj_name = User.objects.get(username=user) 
        if result: 
         SmsHistory.objects.create(
          number=user, 
          recipient=obj_name.get_full_name(), 
          sms_subject=subject, 
          sms_text=message, 
          sms_type = "Promotional SMS" 
          )     
      else: 
       return SendSMSForm 
     return SendSMSForm 
+0

您是否正在更改任何點的選項? Django不允許您選擇不在該字段的查詢集上的值。 – Rubico

+0

添加'select_users'到'欄= [ 'sms_subject', 'sms_text']',也不過在__init__如果更改,然後使它像這樣和嘗試:'select_users = forms.ModelMultipleChoiceField(小部件= forms.CheckboxSelectMultiple)' –

+0

#Rubico:我沒有改變任何點的選擇,但我想那些選擇的值 –

回答

2

你可以嘗試:

select_users = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple)

+0

#trantu:我需要選擇,這是在數據庫中,因此這就是爲什麼我寫ModelMultipleChiceField –

+0

@mahendrakamble:你已經做在'__init__' - >'self.fields ['select_users']。choices = ...'。但是你有沒有試過我的建議? – trantu

+0

#trantu:是啊,它...非常感謝你!你節省了我的時間。 –

相關問題