Skip to content

Instantly share code, notes, and snippets.

@Kronuz
Last active December 14, 2015 13:09
Show Gist options
  • Save Kronuz/5091384 to your computer and use it in GitHub Desktop.
Save Kronuz/5091384 to your computer and use it in GitHub Desktop.
This adds some multi-table inheritance to django-denorm
--- django-denorm/denorm/dependencies.py
+++ django-denorm/denorm/dependencies.py
@@ -260,7 +260,7 @@ class CallbackDependOnRelated(DependOnRelated):
model=DirtyInstance,
columns=("content_type_id", "object_id"),
values=triggers.TriggerNestedSelect(
- self.this_model._meta.db_table,
+ self.this_model._meta.pk.model._meta.db_table,
(content_type,
self.this_model._meta.pk.get_attname_column()[1]),
**{self.field.get_attname_column()[1]: "NEW.%s" % self.other_model._meta.pk.get_attname_column()[1]}
@@ -270,7 +270,7 @@ class CallbackDependOnRelated(DependOnRelated):
model=DirtyInstance,
columns=("content_type_id", "object_id"),
values=triggers.TriggerNestedSelect(
- self.this_model._meta.db_table,
+ self.this_model._meta.pk.model._meta.db_table,
(content_type,
self.this_model._meta.pk.get_attname_column()[1]),
**{self.field.get_attname_column()[1]: "OLD.%s" % self.other_model._meta.pk.get_attname_column()[1]}
@@ -291,17 +291,21 @@ class CallbackDependOnRelated(DependOnRelated):
action_new = triggers.TriggerActionInsert(
model=DirtyInstance,
columns=("content_type_id", "object_id"),
- values=(
- content_type,
- "NEW.%s" % self.field.get_attname_column()[1],
+ values=triggers.TriggerNestedSelect(
+ self.field.model._meta.db_table,
+ (content_type,
+ self.field.get_attname_column()[1]),
+ **{self.field.model._meta.pk.get_attname_column()[1]: "NEW.%s" % self.other_model._meta.pk.get_attname_column()[1]}
)
)
action_old = triggers.TriggerActionInsert(
model=DirtyInstance,
columns=("content_type_id", "object_id"),
- values=(
- content_type,
- "OLD.%s" % self.field.get_attname_column()[1],
+ values=triggers.TriggerNestedSelect(
+ self.field.model._meta.db_table,
+ (content_type,
+ self.field.get_attname_column()[1]),
+ **{self.field.model._meta.pk.get_attname_column()[1]: "OLD.%s" % self.other_model._meta.pk.get_attname_column()[1]}
)
)
return [
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment