﻿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
25085	Select Widget's __deepcopy__ does not copy its choices.	ericfc	ericfc	"Select inherits its parent's (Widget's) __deepcopy__ which does not take into consideration its choices field and we get weird behavior like below:

{{{
from django import forms 

class Fields(forms.Form):
    field = forms.ChoiceField(choices=(('one', 'one'), ('two', 'two')))

class Foo(Fields):
    def __init__(self, *args, **kwargs):
        super(Foo, self).__init__(*args, **kwargs)
        self.fields['field'].widget.choices[0] = ('foo', 'foo')        

class Bar(Fields):
    pass 

foo = Foo()
bar = Bar()

foo.fields['field'].widget.choices
>>>[('foo', 'foo'), ('two', 'two')]

bar.fields['field'].widget.choices
>>>[('foo', 'foo'), ('two', 'two')]
}}}

Where foo and bar have nothing to do with one another.
A more simple example:
{{{
import copy
from django import forms

widget = forms.Select()
widget_copy = copy.deepcopy(widget)

widget.attrs is widget_copy.attrs
>>>False
widget.choices is widget_copy.choices
>>>True
}}}
Since we did a deepcopy the {{{widget.choices is widget_copy.choices}}} must have returned {{{False}}} yet it returned {{{True}}}."	Bug	closed	Forms	1.8	Normal	fixed	Select Widget deepcopy __deepcopy__ choices		Ready for checkin	1	0	0	0	0	0
