# Customer wants to extend my Models

**URL:** <https://forum.djangoproject.com/t/customer-wants-to-extend-my-models/3046>\
**Category:** Using Django\
**Created:** [June 20, 2020, 7:16am UTC](https://forum.djangoproject.com/t/customer-wants-to-extend-my-models/3046 "2020-06-20T07:16:15Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![guettli](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/guettli/32/1896_2.png) [@guettli](https://forum.djangoproject.com/u/guettli)\
**Post date:** [June 20, 2020, 7:16am UTC](https://forum.djangoproject.com/t/customer-wants-to-extend-my-models/3046/1 "2020-06-20T07:16:15Z")

</div>

Django, ORM and migrations are great.

But if the customer wants to be able to extend some models on his own (without Python knowledge, by using the GUI), then I am clueless. Up to now I found no solution to this.

Has someone an idea how to solve this?

---

<div class="post-metadata">

**Author:** ![KenWhitesell](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/kenwhitesell/32/280_2.png) [@KenWhitesell](https://forum.djangoproject.com/u/KenWhitesell)\
**Post date:** [June 20, 2020, 4:10pm UTC](https://forum.djangoproject.com/t/customer-wants-to-extend-my-models/3046/2 "2020-06-20T16:10:05Z")

</div>

That’s because there isn’t one - at least not a clean/safe/secure method. Unlike some other CMSs (e.g. Drupal) that have an abstraction layer between the “framework” models and “user content” models, Django’s models all correspond directly to tables.

Now, there _might_ be an existing Python-based CMS providing that type of facility, but I’m not aware of any - and Django isn’t it.

---

<div class="post-metadata">

**Author:** ![atcrank](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/atcrank/32/2029_2.png) [@atcrank](https://forum.djangoproject.com/u/atcrank)\
**Post date:** [June 23, 2020, 1:34am UTC](https://forum.djangoproject.com/t/customer-wants-to-extend-my-models/3046/3 "2020-06-23T01:34:51Z")

</div>

I agree with KenWhitesell that this is probably something that seems likely to create more trouble than its worth. You could consider if a system for tagging objects with extra information would satisfy, (probably ContentTypes), but for normal tag systems you could have diverse tags but they’d all be of the same type.

An alternate, flexible model is EntityAttributeValue, in which your customer could define an Attribute and Value for that attribute for an entity. The paradigm case in which this is useful (according to this writeup for Django-EAV2 [https://github.com/makimo/django-eav2](https://github.com/makimo/django-eav2)) is for objects that might have any of a very large set of attributes but probably only have a handful. But there’s a risk that in a year’s time the customer has gone to town and put heaps of confused, redundant, conflicting data into the EAV table and its affecting performance negatively. I hope that’s useful, or at least interesting.

---

<div class="post-metadata">

**Author:** ![guettli](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/guettli/32/1896_2.png) [@guettli](https://forum.djangoproject.com/u/guettli)\
**Post date:** [July 3, 2020, 12:00pm UTC](https://forum.djangoproject.com/t/customer-wants-to-extend-my-models/3046/4 "2020-07-03T12:00:18Z")

</div>

Thank you for your answer.
