Django form error message showing despite selecting something from dropdown -
i have django model is:
class account(models.model): name = models.charfield(max_length=50, blank=true) number = models.charfield(max_length=16, blank=true)
i'd create form user can select existing account's phone number dropdown list. in forms.py
, have:
class accountselectform(forms.form): phone_num_err_msgs = {'required': "you must select phone number send message."} phone_number = forms.charfield(required=true, error_messages=phone_num_err_msgs) selected_group_ids = forms.charfield(required=true, widget=forms.hiddeninput) launch_datetime = forms.charfield(required=true)
in views.py
, have:
class accountselectview(loginrequiredmixin, formview): template_name = 'campaigns/send.html' form_class = accountselectform success_url = reverse_lazy('campaigns:taskq_list') def get_context_data(self, **kwargs): data = super(accountselectview, self).get_context_data(**kwargs) data['groups'] = group.objects.all() data['campaign'] = campaign.objects.get(id=self.request.get['cam_id']) data['accounts'] = account.objects.all() return data def form_valid(self, form): # if insert pdb, never reach here #import pdb #pdb.set_trace() data = form.cleaned_data campaign_id = self.request.get['cam_id'] # ... other form validation stuff here return super(conversationsendview, self).form_valid(form)
in send.html
, have:
<form action="" method="post"> {% csrf_token %} <!-- couple of other fields collect user input --> <div class="form-group"> <p><b>step 3: select aphone number send message from:</b></p> {{ form.phone_number.errors }} <select id="phone" style="width: 380px;"> <option value="">--------</option> {% in accounts %} <option value="{{ a.id }}">{{ a.number }}</option> {% endfor %} </select> <div class="page-btns"> <input type="submit" class="btn btn-primary" value="send message selected group(s)" /> </div> </form>
but despite selecting entry dropdown list (and other required forms) before submitting, keep seeing phone_num_err_msgs
on html page [please see screenshot here].
is there i'm missing? (which file) can import pdb
, see why returning error? i'm new django, silly mistake/overlook. in advanced answers!
there few things wrong here. immediate cause missing name="phone_number "
in select tag, browser not sending data element.
but not clear why constructing element manually anyway. rather defining charfield , ignoring it, should using modelchoicefield, automatically give select box accounts in.
class accountselectform(forms.form): ... phone_number = forms. modelchoicefield(queryset=account.objects.all())
...
{{ form.phone_number.errors }} {{ form.phone_number }}
Comments
Post a Comment