On Mon, Jul 15, 2013 at 3:16 PM, Sivaram R <sivaram2...@gmail.com> wrote: > forms.py > > PERSON_ACTIONS = ( > ('1', '01.Allowed to rest and returned to class'), > ('2', '02.Contacted parents /guardians'), > ('3', '02a.- Unable to Contact'), > ('4', '02b.Unavailable - left message'),) > > class PersonActionsForm(forms.ModelForm): > action = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(), > choices=PERSON_ACTIONS, required=False, label= u"Actions") > > > models.py > > class Actions(models.Model): > reportperson = models.ForeignKey(ReportPerson) > action = models.IntegerField('Action type') >
When you specify multiple checkboxes in a form and then display it, it should not be a surprise that you are shown multiple checkboxes… In your form, 'action' field is a MultipleChoiceField, and you've specified the widget should by a CheckboxSelectMultiple. As should be obvious from the names, allows you to select multiple choices for this field using checkboxes. However, in your model 'action' field is an IntegerField - it takes exactly one value. Also, IntegerField does not take an unnamed string argument in it's constructor, so I have to ask, is this actually working code? Also, on a minor point, a model class name should be singular, eg 'Action', not 'Actions', otherwise Django will start talking about 'Actionss'. A correct way to do this would be to specify the choices that are valid for that model in the model itself: PERSON_ACTION_CHOICES = ( ('1', '01.Allowed to rest and returned to class'), ('2', '02.Contacted parents /guardians'), ('3', '02a.- Unable to Contact'), ('4', '02b.Unavailable - left message'),) class Action(models.Model): reportperson = models.ForeignKey(ReportPerson) action = models.IntegerField(choices=PERSON_ACTION_CHOICES) Then in your forms.py: class PersonActionsForm(forms.ModelForm): class Meta: model = Action This will display your action as a drop down that allows you to select a single action. You do not want to change it to show checkboxes, checkboxes are for selecting multiple choices. The other option is RadioSelect, which is like a checkbox but automatically only allows one choice to be selected. If you want to display the currently saved choice on the model separately, then use the instance in the form: {{ form.instance.action }} If you added the choices to the model as I recommended, you can even get it to output the text description of the choice: {{ form.instance.get_action_display }} Cheers Tom -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at http://groups.google.com/group/django-users. For more options, visit https://groups.google.com/groups/opt_out.