Hello All,

I am resending this -- seems it didn't reach the last time, sorry if it
turns up twice
------------

I've been messing around with the new MultiValueField and MultiWidget.
I don't  know if the shortcoming is with me or with the implementation
of the field and widget. Let's say I want to create a field that
displays two select fields that are related, I'll use currency display
as an example. The resulting HTML should look like:

<select name="budget_0" id="id_budget">
<option value="USD">USD</option>
<option value="EU">EU</option>
</select>
<select name="budget_1" id="id_budget">
<option value="1000">1000</option>
<option value="2000">2000</option>
</select>

and returns a value like "USD 1000". The implementation I have so far
is:

# Field
class MoneyField(MultiValueField):
    def __init__(self, currency=(), amount=(), required=True,
widget=None, label=None, initial=None):
        fields = (ChoiceField(choices=currency),
ChoiceField(choices=amount))
        super(MoneyField, self).__init__(fields, required, widget,
label, initial)

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

# Widget
class MoneyWidget(MultiWidget):
    def __init__(self, attrs=None, currency=(), amount=()):
        widgets = (Select(attrs=attrs, choices=currency),
Select(attrs=attrs, choices=amount))
        super(MoneyWidget, self).__init__(widgets, attrs)

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

The problem is,  when I use the field I have to repeat the choices for
both  widget and the field, like so:

CURRENCY_CHOICES = [('USD', 'USD'), ('EU', 'EU')]
AMOUNT_CHOICES = [('1000', '1000'), ('2000', '2000')]

class MyForm(forms.Form):
    budget = MoneyField(
                label="Vacation budget (hotel amount only)",
                currency=CURRENCY_CHOICES,
                amount=AMOUNT_CHOICES,
                required=False,
                widget=MoneyWidget(currency=CURRENCY_CHOICES,
amount=AMOUNT_CHOICES)
            )

Am I doing something wrong here are is it just a caveat with using
ChoiceField? Any guidance would be appreciated.

Cheers!


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to [email protected]
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