MCPcopy
hub / github.com/django/django / InlineAdminForm

Class InlineAdminForm

django/contrib/admin/helpers.py:468–537  ·  view source on GitHub ↗

A wrapper around an inline form for use in the admin system.

Source from the content-addressed store, hash-verified

466
467
468class InlineAdminForm(AdminForm):
469 """
470 A wrapper around an inline form for use in the admin system.
471 """
472
473 def __init__(
474 self,
475 formset,
476 form,
477 fieldsets,
478 prepopulated_fields,
479 original,
480 readonly_fields=None,
481 model_admin=None,
482 view_on_site_url=None,
483 ):
484 self.formset = formset
485 self.model_admin = model_admin
486 self.original = original
487 self.show_url = original and view_on_site_url is not None
488 self.absolute_url = view_on_site_url
489 super().__init__(
490 form, fieldsets, prepopulated_fields, readonly_fields, model_admin
491 )
492
493 def __iter__(self):
494 for name, options in self.fieldsets:
495 yield InlineFieldset(
496 self.formset,
497 self.form,
498 name,
499 self.readonly_fields,
500 model_admin=self.model_admin,
501 **options,
502 )
503
504 def needs_explicit_pk_field(self):
505 return (
506 # Auto fields are editable, so check for auto or non-editable pk.
507 self.form._meta.model._meta.auto_field
508 or not self.form._meta.model._meta.pk.editable
509 # The pk can be editable, but excluded from the inline.
510 or (
511 self.form._meta.exclude
512 and self.form._meta.model._meta.pk.name in self.form._meta.exclude
513 )
514 or
515 # Also search any parents for an auto field. (The pk info is
516 # propagated to child models so that does not need to be checked
517 # in parents.)
518 any(
519 parent._meta.auto_field or not parent._meta.model._meta.pk.editable
520 for parent in self.form._meta.model._meta.all_parents
521 )
522 )
523
524 def pk_field(self):
525 return AdminField(self.form, self.formset._pk_field.name, False)

Callers 2

__iter__Method · 0.85

Calls

no outgoing calls

Tested by 1