﻿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
20813	max_length incorrectly passed to MultiValueField-derived class	Nathan Osman	nobody	"I have created a custom model field that looks something like this:

{{{
class TestModelField(models.CharField):
    __metaclass__ = models.SubfieldBase
    
    def __init__(self, *args, **kwargs):
        kwargs['max_length'] = 10
        super(TestModelField, self).__init__(*args, **kwargs)

    # ... to_python and get_prep_value omitted ...
    
    def formfield(self, **kwargs):
        defaults = {'form_class': TestFormField,}
        defaults.update(kwargs)
        return super(TestModelField, self).formfield(**defaults)
}}}

The `TestFormField` class looks something like this:

{{{
class TestFormField(forms.MultiValueField):
    widget = TestWidget
    
    def __init__(self, *args, **kwargs):
        fields = (
            forms.IntegerField(min_value=0, max_value=15),
            forms.IntegerField(min_value=0, max_value=15),
        )
        super(TestFormField, self).__init__(fields, *args, **kwargs)
    
    # ... compress omitted ...
}}}

The problem lies in the fact that `TestFormField.__init__` is receiving `max_length` in `kwargs`. Because this eventually gets passed along to `Field.__init__` which doesn't have a `max_length` named parameter, an error is raised:

{{{
TypeError: __init__() got an unexpected keyword argument 'max_length'
}}}"	Bug	closed	Database layer (models, ORM)	1.5	Normal	worksforme			Unreviewed	0	0	0	0	0	0
