Phil,

Thought an example might help.

class VacationBudgetField(MultiValueField):
    def __init__(self, required=True, label=None, widget=None,
initial=None, f_type=(), currency=(), amount=None):
        fields = (ChoiceField(choices=f_type),
ChoiceField(choices=currency), IntegerField())
        widget = widget or BudgetWidget(f_type=f_type,
currency=currency, amount=amount)
        super(VacationBudgetField, self).__init__(fields, required,
widget, label, initial)

    def compress(self, data_list):
        if data_list:
            return " ".join(str(i) for i in data_list)
        return None

## Where BuggetWidget is
class BudgetWidget(MultiWidget):
    def __init__(self, attrs=None, f_type=(), currency=(),
amount=None):
        widgets = (Select(attrs=attrs, choices=f_type),
Select(attrs=attrs, choices=currency), TextInput())
        super(BudgetWidget, self).__init__(widgets, attrs)

    def decompress(self, value):
        if value:
            return value.split(' ', 2)
        return ['', '', '']

## Used it like so...
budget = VacationBudgetField(f_type=[('a', 'a'), ('b', 'b')],
currency=[('d', 'd'), ('e', 'e')])

Hope that helps.

On Feb 6, 4:51 pm, "canen" <[EMAIL PROTECTED]> wrote:
> Phil,
>
> I think you must subclass it and define the compress method. See the
> comments herehttp://code.djangoproject.com/browser/django/trunk/
> django/newforms/fields.py#L412.  You will also need a MultiWidget to
> go with the field.
>
> On Feb 6, 10:04 am, "Phil Powell" <[EMAIL PROTECTED]> wrote:
>
> > Hi,
>
> > Can anyone provide any pointers on how I use MultiValueField?  Can I
> > use it straight out of the box, or do I have to subclass to create a
> > new field and a new MultiValueWidget?
>
> > I thought that this code would just work:
>
> > postcode = forms.MultiValueField(fields=(forms.CharField(max_length=4),
> > forms.CharField(max_length=4)))
>
> > But all I ever get rendered in my template (using {{ form.postcode }})
> > is a single text input.
>
> > Any advice would be much appreciated.
>
> > -Phil


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to