Glossary¶
- Virtual Field¶
A form field dynamically injected into a
ModelAdminbyReverseRelationAdminMixin. It does not exist on the model itself but is used to manage the reverse relationship. See Concepts & Architecture for a walkthrough of how these form controls are created and synchronised.- Binding¶
The action of associating a reverse object with the current admin object by setting the
ForeignKeyon the reverse object to point to the current one. The transaction ordering is covered in Concepts & Architecture.- Unbinding¶
The action of disassociating a reverse object from the current admin object, typically by setting its ForeignKey to
NULL. Review the safeguards in Caveats when unbinding non-nullable relations.- Limiter¶
A callable or dictionary provided in
ReverseRelationConfigthat filters the queryset for a virtual field, controlling which objects are available for selection. See Configuration for implementation strategies.- Policy¶
A callable or object that implements permission checks for a virtual field. It determines whether a user has the authority to view, edit, or make specific selections. The evaluation flow is detailed in Configuration.
- Render Gate¶
The first of three permission checkpoints. Runs during form
__init__(before templates render) to decide whether a virtual field is visible, disabled, or hidden. By default it consults a base permission; enablereverse_render_uses_field_policyto use per-field policies. See Permissions.- Validation Gate¶
The second permission checkpoint. Runs during form
clean()once a selection exists. If a custom policy denies the selection, a field error is attached. See Permissions.- Persistence Gate¶
The third and final permission checkpoint. Runs during form
save()to filter the update payload so that unauthorized virtual fields are excluded — even if a crafted POST included them. See Permissions.- Bulk Mode¶
An optional per-field setting (
bulk=TrueonReverseRelationConfig) that uses Django’s.update()for binding and unbinding instead of individual model saves. Faster for large datasets but bypasses model signals (pre_save,post_save). See Data integrity & transactions.