我想通過管理端發送短信到用戶選擇的形式的多個選項中的一個,但我無法從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:我沒有改變任何點的選擇,但我想那些選擇的值 –