Ich benutze knusprige Formen 1.6 mit Django 1.9 und Python 3.4.Wie können Sie mit der Methode "django crispy" in der Methode "Field" des Layout-Objekts "extra_context" festlegen?
Wenn ich die Field-Klasse mit einem Layout verwende, kann der extra_context nicht funktionieren. Die Werte werden nicht in den Kontext injiziert.
Die folgende Vorlage gibt den "Schwellenwert" -Wert nicht aus.
Hier ist mein Formularcode.
# project_edit_form.py
from django import forms
from django.contrib.auth.models import Group
from .models import Projects
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, HTML
class ProjectEditForm(forms.ModelForm):
class Meta:
model = Projects
fields = ('project_description', 'location', 'days_elapsed',)
def __init__(self, *args, **kwargs):
self.helper = FormHelper()
# ...
self.helper.layout = Layout(
Fieldset(
'Project',
'project_description',
'location',
Field('days_pge_first_responded', template="days_elapsed_field.html", extra_context={"threshold":15})%}"),
),
)
super(ProjectEditForm, self).__init__(*args, **kwargs)
Und hier ist die HTML-Vorlage für das Feld:
# days_elapsed_field.html
extra_context.threshold: {{ extra_context.threshold }}
threshold: {{ threshold }}
field.threshold: {{ field.threshold }}
<div id="div_id_{{ field_name }}" class="form-group">
<label for="{{ field.id_for_label }}" class="control-label"> {{ field.label }} </label>
<div >
<input
style="{% if field.value > threshold %} background-color:#FFE8E8; {% else %} background-color:#e3e3e3 {% endif %}"
class="textinput textInput form-control" id="{{ field.id}}" name="{{ field.name}}" readonly="True" type="text" value="{{ field.value }}" />
</div>
</div>
Und hier ist die Haupt HTML-Template:
{% load crispy_forms_tags %}
<!doctype html>
<html>
<head>...</head>
<body>
<form action="" method="post" class="form-horizontal" >
{% crispy form %}
</form>
</body>
</html>