Created
November 27, 2014 02:35
-
-
Save arescope/3e422d14cd480fc8ca69 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/tenancy/models.py b/tenancy/models.py | |
index 2cd16ac..097a1f0 100644 | |
--- a/tenancy/models.py | |
+++ b/tenancy/models.py | |
@@ -27,7 +27,7 @@ from .managers import (AbstractTenantManager, TenantManager, | |
from .signals import lazy_class_prepared | |
from .utils import ( | |
clear_opts_related_cache, disconnect_signals, get_model, | |
- receivers_for_model, remove_from_app_cache | |
+ receivers_for_model, remove_from_app_cache, remove_virtual_fields | |
) | |
@@ -456,6 +456,8 @@ class TenantModelBase(ModelBase): | |
rel.on_delete = on_delete | |
field.contribute_to_class(model, field.name) | |
+ remove_virtual_fields(model) | |
+ | |
return model | |
def _prepare(self): | |
@@ -535,6 +537,8 @@ class TenantModelBase(ModelBase): | |
TenantModelBase, str(name), bases, attrs | |
) | |
+ remove_virtual_fields(model) | |
+ | |
return model | |
def destroy(self): | |
diff --git a/tenancy/utils.py b/tenancy/utils.py | |
index e13edcd..0fe8e01 100644 | |
--- a/tenancy/utils.py | |
+++ b/tenancy/utils.py | |
@@ -128,6 +128,15 @@ def unreference_model(model): | |
raise | |
+def remove_virtual_fields(model): | |
+ for field in model._meta.virtual_fields: | |
+ from .models import TenantModelBase | |
+ from django.contrib.contenttypes.generic import GenericRelation | |
+ if (isinstance(field, GenericRelation) and isinstance(field.rel.to, TenantModelBase) | |
+ and field.rel.to == field.rel.to._for_tenant_model): | |
+ model._meta.virtual_fields.remove(field) | |
+ | |
+ | |
model_sender_signals = ( | |
models.signals.pre_init, | |
models.signals.post_init, |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment