2016-06-10 117 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:是啊,它...非常感谢你!你节省了我的时间。 –

相关问题