MCPcopy
hub / github.com/django/django / BoundWidget

Class BoundWidget

django/forms/boundfield.py:333–371  ·  view source on GitHub ↗

A container class used for iterating over widgets. This is useful for widgets that have choices. For example, the following can be used in a template: {% for radio in myform.beatles %} <label for="{{ radio.id_for_label }}"> {{ radio.choice_label }} <span class

Source from the content-addressed store, hash-verified

331
332@html_safe
333class BoundWidget:
334 """
335 A container class used for iterating over widgets. This is useful for
336 widgets that have choices. For example, the following can be used in a
337 template:
338
339 {% for radio in myform.beatles %}
340 <label for="{{ radio.id_for_label }}">
341 {{ radio.choice_label }}
342 <span class="radio">{{ radio.tag }}</span>
343 </label>
344 {% endfor %}
345 """
346
347 def __init__(self, parent_widget, data, renderer):
348 self.parent_widget = parent_widget
349 self.data = data
350 self.renderer = renderer
351
352 def __str__(self):
353 return self.tag(wrap_label=True)
354
355 def tag(self, wrap_label=False):
356 context = {"widget": {**self.data, "wrap_label": wrap_label}}
357 return self.parent_widget._render(self.template_name, context, self.renderer)
358
359 @property
360 def template_name(self):
361 if "template_name" in self.data:
362 return self.data["template_name"]
363 return self.parent_widget.template_name
364
365 @property
366 def id_for_label(self):
367 return self.data["attrs"].get("id")
368
369 @property
370 def choice_label(self):
371 return self.data["label"]

Callers 1

subwidgetsMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected