﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
21568	ModelMultipleChoiceField + show_hidden_initial + has_changed = TypeError	dibrovsd@…	Claude Paroz	"hi


{{{
def test(request):
    u"""""" for debug and test's """"""

    from django import forms
    from django.http import HttpResponse
    from django.template import RequestContext, Template

    user = models.User.objects.get(pk=1)
    changed = None

    class TestForm(forms.Form):
        users = forms.ModelMultipleChoiceField(show_hidden_initial=True, queryset=models.User.objects.all())

    if request.method == 'POST':
        form = TestForm(data=request.POST)
        form.is_valid()

        ### next line raised: TypeError int() argument must be a string or a number, not 'list' ###
        ### django/db/models/fields/__init__.py in get_prep_value, line 613 ###
        changed = form.has_changed() 
    else:
        form = TestForm(initial={'users': [user]})
    
    c = RequestContext(request, {'form': form, 'changed': changed})
    
    t = Template(""""""
        <form method=POST>
            {% csrf_token %}
            {{form}}
            <input type=submit>
        </form>

        {{changed}}
        """""") 

    return HttpResponse(t.render(c))
}}}

if change to:
users = forms.ModelMultipleChoiceField(queryset=models.User.objects.all())
and 
form = TestForm(data=request.POST, initial={'users': [user]})

This works, but may lead to loss of the changes made by other users"	Bug	closed	Forms	1.6	Release blocker	fixed	ModelMultipleChoiceField show_hidden_initial		Accepted	1	0	0	0	0	0
