This release is a pre-release and may not be stable for production use.
THIS IS UNSTABLE PROJECT, IF YOU WANT TO USE IT - FIX WHAT YOU NEED
Right now we’re targeting to get things working on Django 4.2;
WARNING: This project is not in good state, and is likely to break with django updates. Do not use it for any new projects.
Recommended way for new projects is django-mongodb-backend.
Working / Django 4.2
[ok] sessions
[ok] models/fields, fields needs testing
[ok] views
[ok] auth
[?] admin - partially working, some things broken
Current status
Many parts of projects rewritten/removed; Instead of copying django code i try to subclass/reuse/even monkey-patch; Everything listed above is working; admin - just base fuctions like changelist/edit, not tested with every form type; need’s more work.
Some code just plaholder to make things work; django/forms/document_options.py - dirty hack absolutely required to get thigs work with django. It replaces mongo _meta on model/class and provide django-like interface. It get’s replaced after class creation via some metaclass magick.
Fields notes
Project uses mongoengine style argument required=False, not django style blank=False, to be compatible with mongo-types. All your fields are optional by default.
TODO
Sync some files/docs that removed from mongoengine: https://github.com/seglberg/mongoengine/commit/a34f4c1beb93f430c37da20c8fd96ce02a0f20c1?diff=unified
Add docs for integrating: https://github.com/hmarr/django-debug-toolbar-mongo
Take a look at django-mongotools: https://github.com/wpjunior/django-mongotools
Connecting
In your settings.py file, add following lines:
MONGODB_DATABASES = {
"default": {
"name": database_name,
"host": database_host,
"password": database_password,
"username": database_user,
"tz_aware": True, # if you using timezones in django (USE_TZ = True)
},
}
INSTALLED_APPS += ["django_mongoengine"]
Documents
Inhherit your documents from django_mongoengine.Document, and define fields using django_mongoengine.fields.:
from django_mongoengine import Document, EmbeddedDocument, fields
class Comment(EmbeddedDocument):
created_at = fields.DateTimeField(
default=datetime.datetime.now, editable=False,
)
author = fields.StringField(verbose_name="Name", max_length=255)
email = fields.EmailField(verbose_name="Email")
body = fields.StringField(verbose_name="Comment")
class Post(Document):
created_at = fields.DateTimeField(
default=datetime.datetime.now, editable=False,
)
title = fields.StringField(max_length=255)
slug = fields.StringField(max_length=255, primary_key=True)
comments = fields.ListField(
fields.EmbeddedDocumentField('Comment'), required=False,
)
Sessions
Django allows the use of different backend stores for its sessions. MongoEngine provides a MongoDB-based session backend for Django, which allows you to use sessions in your Django application with just MongoDB. To enable the MongoEngine session backend, ensure that your settings module has 'django.contrib.sessions.middleware.SessionMiddleware' in the MIDDLEWARE_CLASSES field and 'django.contrib.sessions' in your INSTALLED_APPS. From there, all you need to do is add the following line into your settings module:
SESSION_ENGINE = 'django_mongoengine.sessions' SESSION_SERIALIZER = 'django_mongoengine.sessions.BSONSerializer'
Django provides session cookie, which expires after `SESSION_COOKIE_AGE` seconds, but doesn’t delete cookie at sessions backend, so 'mongoengine.django.sessions' supports mongodb TTL.
How to run example app
uv sync --group dev
uv pip install -r example/tumblelog/requirements.txt
uv run python example/tumblelog/manage.py runserver
How to run tests
uv run python -m pytest
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_mongoengine-0.6.0b5.tar.gz.
File metadata
- Download URL: django_mongoengine-0.6.0b5.tar.gz
- Upload date:
- Size: 83.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.9.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce03492124bb1fa80133bd604effcc0f39e6ef8883c9060198fcad1e8b541fa6
|
|
| MD5 |
c742d2fbc5822f19a3ca151275d1265c
|
|
| BLAKE2b-256 |
4266aac3ed356d20eb1c8bde7d68d501cb73c41a517658e81693b45cb74c3b65
|
File details
Details for the file django_mongoengine-0.6.0b5-py3-none-any.whl.
File metadata
- Download URL: django_mongoengine-0.6.0b5-py3-none-any.whl
- Upload date:
- Size: 99.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.9.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
315f7790a7a8ae7582fdcc945bf9e33cb6d67bd5eef6710ae019dd1171a47473
|
|
| MD5 |
4f86d5af2faf73736bbd5570f41b4432
|
|
| BLAKE2b-256 |
292585ae9be8c010ff5912b8e8eb5486457e18b9db8c8b209b50178238221bfa
|