我想通过管理端发送短信到用户选择的形式的多个选项中的一个,但我无法从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
您是否正在更改任何点的选项? Django不允许您选择不在该字段的查询集上的值。 – Rubico
添加'select_users'到'栏= [ 'sms_subject', 'sms_text']',也不过在__init__如果更改,然后使它像这样和尝试:'select_users = forms.ModelMultipleChoiceField(小部件= forms.CheckboxSelectMultiple)' –
#Rubico:我没有改变任何点的选择,但我想那些选择的值 –