ich habe ein Formular, das zum Bearbeiten von verschiedenen Werten dienen soll. Da die Daten anders präsentiert werden sollen, als sie in der Datenbank geschrieben werden habe ich ein eigenes Formularfeld creiert.
Das Feld besteht aus einem Integer-Feld und einem Dezimal-Feld
Code: Alles auswählen
class OddsField(MultiValueField):
widget = OddsWidget()
def __init__(self, *args, **kwargs):
number = IntegerField()
amount = DecimalField(decimal_places = 2)
fields = [number, amount]
super(OddsField, self).__init__(fields, *args, **kwargs)
Code: Alles auswählen
class DrawAdminForm(forms.ModelForm):
class Meta:
model = Draw
exclude = ('figures','odds')
def __init__(self, *args, **kwargs):
draw = kwargs.pop('instance')
super(DrawAdminForm, self).__init__(*args, **kwargs)
values = draw.get_figures()
odd_entries = draw.get_odds_numbers()
self.odds = list()
self.fields['date_time'].widget = widgets.AdminSplitDateTime()
for index in range(draw.get_number_figures()):
self.fields['dynf_%s' % index] = forms.IntegerField(label='Zahl' + str(index+1), initial=values[index])
for index in range(draw.get_number_classes()):
self.fields['class_%s' % index] = OddsField(label='Klasse ' + str(index+1) , required=False)
if len(odd_entries) > index :
entries = str(odd_entries[index]).split(AMOUNT_SEPARATOR)
self.fields['class_%s' % index].fields[0].initial = int(entries[0])
self.fields['class_%s' % index].fields[1].initial = Decimal(entries[1])
Code: Alles auswählen
{% for field in form %}
{% if field.name|starts_with:"class" %}
<label class="left" for="{{form.field.name}}">{{ field.label_tag }}: </label>
{{ field }} {{ draw.game.currency }} {{ field.errors }} <br/>
{% endif %}
{% endfor %}
Was mache ich falsch?
Vielen Dank
Matt