edit_handlers.py 755 B

123456789101112131415161718192021222324
  1. from django.template.loader import render_to_string
  2. from django.utils.safestring import mark_safe
  3. from wagtail.admin.edit_handlers import BaseChooserPanel
  4. from .widgets import AdminSnippetChooser
  5. class SnippetChooserPanel(BaseChooserPanel):
  6. object_type_name = 'item'
  7. def widget_overrides(self):
  8. return {self.field_name: AdminSnippetChooser(model=self.target_model)}
  9. def render_as_field(self):
  10. instance_obj = self.get_chosen_item()
  11. return mark_safe(render_to_string(self.field_template, {
  12. 'field': self.bound_field,
  13. self.object_type_name: instance_obj,
  14. }))
  15. def on_model_bound(self):
  16. super().on_model_bound()
  17. self.target_model = self.db_field.remote_field.model