Ändern Sie die name-Attribut des form-Feld in der django-template mit
Ich habe Formularfeld {{form.item}} die render zu
<input type="text" name="item" >
Wie kann ich das ändern das name-Attribut des Formularfeldes verwenden von benutzerdefinierten template-tags?
Ich habe versucht, durch das senden, das Formular template-tag, wo
form.fields['item'].widget.attrs['name'] = 'new_name'
Aber ich bin nicht immer Erfolg.
Brauche ich zum ändern des name-Attributs im template.
UPDATE
models.py
class A(models.Model):
name = models.CharField(50)
type = models.CharField(50)
class B(models.Model):
field1 = ForeignKeyField(A)
value = IntegerField()
views.py
def saving_calculation(request):
SavingFormset = modelformset_factory(A, extra=2)
OfferInlineFormSet = inlineformset_factory(
A, B,
extra = 4
)
if request.method == 'POST':
pass
else:
offer_formset = OfferInlineFormSet()
saving_formset = SavingFormset(queryset=SavingCalculation.objects.none())
return render_to_response(
'purchasing/saving_calculation.html',
{
'offer_formset':offer_formset,
'saving_formset':saving_formset,
}
Vorlage
<form action="." method="POST">
{{ offer_formset.management_form }}
{{ saving_formset.management_form }}
{{ saving_formset.prefix }}
<table>
<thead>
<tr>
<th>Business Unit</th>
<th>Category</th>
<th>Buyer</th>
<th>Offer1</th>
<th>Offer2</th>
<th>Offer3</th>
<th>Offer4</th>
</tr>
</thead>
<tbody>
{% for saving in saving_formset.forms %}
<tr>
<td>{{saving.businessunit}}</td>
<td>{{saving.type_of_purchase}}</td>
<td>{{saving.buyer}}</td>
{% for offer in offer_formset.forms %}
<td>{{ offer|set_field_attr:forloop.counter0 }}</td>
</tr>
{% endfor %}
{% endfor %}
</tbody>
</table>
<input type="submit" value="Save" />
</form>
Nun im custom-template-tag muss ich zum zuweisen von neuen Namen für jedes Feld der inline-Formularsatz
mögliche Duplikate von Überschreiben Django form Feldname attr
Warum willst du den Namen ändern? Was macht Sie denken, Sie brauchen diese?
Äh, was? Weder von denen sind ein Grund für die Verwendung von dynamischen Namen. Erklären Sie Ihren Fall, und warum es nicht von der Norm abgedeckt Ansicht/Struktur-formset.
Ich möchte, um dies zu erreichen stackoverflow.com/questions/11929355/...
Ich aktualisierte die Frage
Warum willst du den Namen ändern? Was macht Sie denken, Sie brauchen diese?
Äh, was? Weder von denen sind ein Grund für die Verwendung von dynamischen Namen. Erklären Sie Ihren Fall, und warum es nicht von der Norm abgedeckt Ansicht/Struktur-formset.
Ich möchte, um dies zu erreichen stackoverflow.com/questions/11929355/...
Ich aktualisierte die Frage
InformationsquelleAutor Asif | 2012-08-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich getestet, ein paar verschiedene Möglichkeiten, und es funktioniert mit vielen Typen von Formularfeldern.
Verwenden
set_field_html_name(...)
auf jedes Feld, das Sie wollen, um den Namen auf.InformationsquelleAutor HelpyHelperton
InformationsquelleAutor Sergey
Sie können eine Unterklasse, jede widget-Klasse, was Sie brauchen, und erstellen Sie Ihre eigenen "render-Methode".
Beispiele sind in der PATH_TO_YOUR_DJANGO/django/forms/forms.py
InformationsquelleAutor Volodymyr Pavlenko
<input name="NAME"/>
InformationsquelleAutor Alessandro Odetti
InformationsquelleAutor Chelder Nunes Guimarães