Skip to content
Snippets Groups Projects

Let model extensions define new fields

Merged Nik | Klampfradler requested to merge feature/extensible-models into master

This MR extends the ExtensibleModel to accept fields in addition to properties and methods. It leverages django-jsonstore in order to aggregate those fields in one extended_data JSONField, so as to not need migrations when apps add additional fields. Apps should use this feature sparsely, and for more complex additions, add their own model with a ForeignKey instead.

The following example put in model_extensions.py of an app adds a field for the t-shirt size of a person:

from jsonstore import CharField

from .models import Person


Person.field(shirt_size=CharField(verbose_name="T-Shirt size", default="7XL"))

The fields are transparent to all known parts of Django. They are accessed like any other field, and even automagically show up in forms or a ModelAdmin:

Skjermdump_fra_2020-01-18_23-28-48

Filtering on JSONField is fully supported.

Advances #141 (closed).

Edited by Nik | Klampfradler

Merge request reports

Pipeline #688 failed

Pipeline failed for 9d866ef4 on feature/extensible-models

Merged by Jonathan WethJonathan Weth 5 years ago (Jan 19, 2020 10:31am UTC)

Loading

Pipeline #690 failed

Pipeline failed for 79cb242b on master

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
Please register or sign in to reply
Loading