Larry Martell
Larry Martell

Reputation: 3756

Getting checkbox value in controller

I have a template that creates a text entry field and a checkbox. When the checkbox is unchecked, the text field is disabled and cleared, when it's checked, it's enabled, and the user may or may not have typed in it. In my controller I need to distinguish between the 2 cases when the checkbox is unchecked, and the checkbox is checked but the text field is blank. I can get the value of the text field, but not of the checkbox. Is there some way to do this? I've googled this, and I see it's been asked a few times here, but noneof the solutions seem to work for me.

Upvotes: 0

Views: 2133

Answers (2)

Thomas Schwärzl
Thomas Schwärzl

Reputation: 9917

Are you looking for this?

def myview(request):
    form = MyForm()

    if request.method == 'POST':
        form = MyForm(request.POST)

        if form.is_valid():
            checkbox = request.POST.get('my_checkbox', False) # will be True if checked

            if checkbox:
                # check textfield content
            else:
                # do something else

            return render_to_response(template, kwvars, context_instance=RequestContext(request))

Upvotes: 1

Chris Pratt
Chris Pratt

Reputation: 239220

request.POST.get('my_checkbox_field')

P.S. In Django, they're called "views" not controllers.

UPDATE (based on comment)

I'm taking "controller" to mean "view" since Django doesn't have a concept of controllers and they're closest to views. If that's not the case, by all means correct me. Given that, all function-based views at the very least require a request parameter. If you're using class-based views, then request is simply stored on the view object, so you just need to modify it to self.request. I suggest you take some more time to thoroughly read the docs, as this is pretty much bare minimal understanding stuff that is well documented.

Upvotes: 1

Related Questions