Django Formular-Initialwerte werden nicht gesetzt
Verfasst: Donnerstag 28. Februar 2013, 14:45
Hallo zusammen,
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
Die Werte aus der Datenbank sehen etwa so aus: "5x120340.34" die 5 soll nun als Initialwert in das Integer-Feld der Rest in das Decimal. Das soll aber nur passieren, wenn auch Werte gefunden werden, dazu der Aufruf:
Template
Das Initialisieren klappt bei den Zahlen und dem normalen Integer-Feld, nur nicht mit dem eigenen...
Was mache ich falsch?
Vielen Dank
Matt
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