Postgres declarative functions for Django
Project description
django-pg-ddl-extras
A tiny library that implements declarative postgres function definitions for Django.
Requirements
- Python >= 3.7
- Django >= 3.2
Usage
In the below example, we create a function that is run as part of a constraint trigger.
from django_pg_ddl_extras import (
PostgresTriggerFunctionDefinition,
ConstraintTrigger,
TriggerEvent,
)
from django.db import models
from django.db.models.constraints import Deferrable
# Write a custom constraint in SQL
# In order to get picked up by the migration engine, we include the function definition
# as part of the class `Meta.constraints` list.
# Unfortunately, Django does not seem to have a cleaner way to define this yet.
custom_function = PostgresTriggerFunctionDefinition(
name="my_function",
body="""
DECLARE
BEGIN
IF (TG_OP = 'DELETE') THEN
RETURN OLD;
END IF;
IF NOT FOUND THEN
RAISE EXCEPTION
'This is an example constraint error'
USING ERRCODE = 23514;
END IF;
RETURN NEW;
END;
""",
)
class MyModel(models.Model):
class Meta:
constraints = [
custom_function,
ConstraintTrigger(
name="my_trigger",
events=[TriggerEvent.UPDATE, TriggerEvent.INSERT, TriggerEvent.DELETE],
deferrable=Deferrable.DEFERRED,
function=custom_function.as_func(),
),
]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file django-pg-ddl-extras-0.1.0.tar.gz
.
File metadata
- Download URL: django-pg-ddl-extras-0.1.0.tar.gz
- Upload date:
- Size: 4.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.0a2 CPython/3.10.5 Linux/5.18.3-arch1-1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7717499cf184fe17bcf894853a813844c7ac3aa9656ad1704f2b7439ed7c89ed |
|
MD5 | ea9086fd83b4ec2cc624e4ce1941b138 |
|
BLAKE2b-256 | 5410bf757adc99e36f18c5c1d41f1ca53309a2162f48e08b3942b78592c93875 |
File details
Details for the file django_pg_ddl_extras-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: django_pg_ddl_extras-0.1.0-py3-none-any.whl
- Upload date:
- Size: 5.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.0a2 CPython/3.10.5 Linux/5.18.3-arch1-1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9fd82658768168530980f8985b697737ba142ca3a6dee78bd415e8bdfb14d040 |
|
MD5 | e6265d477534dc91477f8dce61d2fd09 |
|
BLAKE2b-256 | 8bdfc2d26364c0d22a77663e23cf54ae43a64ad91f193dfdf7333c7a7060c230 |