Skip to main content

It allows modifying a model of an django app from the outside, without modifying the code of the app.

Project description

# django-fieldbustier

The purpose of this django-app is to allow you to add fields to models from another application.

## Why this name?

Because wanting to add models from another django-app, from your own, is a bit like wanting to get on a boat and do it by shouting "All Aboard", a knife between your teeth.

And in French, a pirate is also a "flibustier", a word quite close to fieldbustier, so -> django-fieldbustier.

## How to use it django-fieldbustier

you must declare the fields you want to add, modify or delete in your settings.

There are three configuration variables that are:
- ADD_FIELD_DJANGO_FIELDBUSTIER to add fields
- REPLACE_FIELD_DJANGO_FIELDBUSTIER to modify fields
- DELETE_FIELD_DJANGO_FIELDBUSTIER to delete fields

To add or modify fields you must use `FieldBustierConfig`. To delete people you must use `DeleteFieldBustierConfig`.


`FieldBustierConfig` are `namedtuple` with these attributes :
- app_name
- model_klass
- field_name
- field_klass (You can use Django Field or your Field)
- args (a tuple for positional args)
- kwargs (a dict for keyword args)

`DeleteFieldBustierConfig` are `namedtuple` with these attributes :
- app_name
- model_klass
- field_name


### Add a Field

```
from django_fieldbustier.fieldbustier_config import FieldBustierConfig

ADD_FIELD_DJANGO_FIELDBUSTIER = [
FieldBustierConfig(
"demo_app",
"DummyModel",
"new_char_field",
"CharField",
("An another CharField",),
{"blank": True, "max_length": 200},
)
]
```

### Modify a Field


```
from django_fieldbustier.fieldbustier_config import FieldBustierConfig

REPLACE_FIELD_DJANGO_FIELDBUSTIER = [
FieldBustierConfig(
app_name="demo_app",
model_klass="DummyModel",
field_name="char_field",
field_klass="CharField",
args=("CharField FieldBusted !",),
kwargs={"blank": True, "max_length": 200},
),
FieldBustierConfig(
"demo_app",
"DummyModel",
"decimal_field",
"DecimalField",
("Decimal Field FieldBustier",),
{"default": 2.3, "max_digits": 14, "decimal_places": 3},
),
]
```

### Delete a Field

```
from django_fieldbustier.fieldbustier_config import FieldBustierConfig

DELETE_FIELD_DJANGO_FIELDBUSTIER = [DeleteFieldBustierConfig("demo_app",
"DummyModel",
"int_field")]
```

## Migrations

### GENERATE_FIELDBUSTIER_MIGRATIONS option

If you have used SQL to directly implement your changes, then you will not want the migrations to be generated.

To do this, you just have to set (in your settings) GENERATE_FIELDBUSTIER_MIGRATIONS at False.

### Location of migration files

By default, the migration files of an application are located in the application. In our case, if you use Django-Fieldbustier, it is to avoid modifying the target application. This behavior is therefore not appropriate at all.

To avoid this, simply use django's MIGRATION_MODULES variable to choose where you want your migrations to be generated.



## Thanks

Thanks for Olivier Meunier, Creme CRM codebase and Mezzanine injection Fields system for the original idea.


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-fieldbustier-0.7.1.tar.gz (5.1 kB view details)

Uploaded Source

Built Distribution

django_fieldbustier-0.7.1-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

File details

Details for the file django-fieldbustier-0.7.1.tar.gz.

File metadata

  • Download URL: django-fieldbustier-0.7.1.tar.gz
  • Upload date:
  • Size: 5.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.7

File hashes

Hashes for django-fieldbustier-0.7.1.tar.gz
Algorithm Hash digest
SHA256 bdc9dc9c4b1c4de7bcd642b3e22f4e7d1fdc95fd00e290712005e211bd631077
MD5 c9a3f116ffd3e2ede4ce6961e4eb1650
BLAKE2b-256 1e84e9152cbdba2a1ddd20e6db713e99b4b3e8c755facda76b7ccce96b126483

See more details on using hashes here.

Provenance

File details

Details for the file django_fieldbustier-0.7.1-py3-none-any.whl.

File metadata

  • Download URL: django_fieldbustier-0.7.1-py3-none-any.whl
  • Upload date:
  • Size: 5.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.7

File hashes

Hashes for django_fieldbustier-0.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e9126fad0c869c261135093f1e516044fa1dd3879cc538005f5315bb06cc9e22
MD5 a0420235a93be2d0f154c368c6e7bf61
BLAKE2b-256 26b309030ff27be6177ae0e6e768a22f75c5b9f958a4b343e7ae67667afd67bd

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page