Skip to content

Commit 095b848

Browse files
committed
add embedded router
1 parent 09860b1 commit 095b848

File tree

3 files changed

+25
-0
lines changed

3 files changed

+25
-0
lines changed

django_mongodb_backend/routers.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from django.apps import apps
2+
3+
from django_mongodb_backend.models import EmbeddedModel
4+
5+
6+
class MongoDBRouter:
7+
def allow_migrate(self, db, app_label, model_name=None, **hints):
8+
"""EmbeddedModels don't have their own collectionn."""
9+
model = apps.get_model(app_label, model_name)
10+
return False if issubclass(model, EmbeddedModel) else None

tests/models_/models.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
1+
from django.db import models
2+
13
from django_mongodb_backend.models import EmbeddedModel
24

35

46
class Embed(EmbeddedModel):
57
pass
8+
9+
10+
class PlainModel(models.Model):
11+
pass

tests/models_/test_embedded_model.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
from django.db import NotSupportedError
22
from django.test import SimpleTestCase
33

4+
from django_mongodb_backend.routers import MongoDBRouter
5+
46
from .models import Embed
57

68

@@ -45,3 +47,10 @@ def test_get_or_create(self):
4547
msg = "'EmbeddedModelManager' object has no attribute 'get_or_create'"
4648
with self.assertRaisesMessage(AttributeError, msg):
4749
Embed.objects.get_or_create()
50+
51+
52+
class TestRouter(SimpleTestCase):
53+
def test_allow_migrate(self):
54+
router = MongoDBRouter()
55+
self.assertIsNone(router.allow_migrate("db", "models_", "plainmodel"))
56+
self.assertIs(router.allow_migrate("db", "models_", "embed"), False)

0 commit comments

Comments
 (0)