python-django-solo
Subpackage Descriptions
single |
Django Solo
===========
[image]
+---------------------------+
| |
| |
| \ | Django Solo helps working with
singletons:
| /\ | database tables that only have one row.
| >=)'> | Singletons are useful for things like
global
| \/ | settings that you want to edit from the
admin
| / | instead of having them in Django
settings.py.
| |
| |
+---------------------------+
Features
--------
Solo helps you enforce instantiating only one instance of a model in
django.
* You define the model that will hold your singleton object.
* django-solo gives helper parent class for your model and the admin
classes.
* You get an admin interface that's aware you only have one object.
* You can retrieve the object from templates.
* By enabling caching, the database is not queried intensively.
Use Cases
--------
Django Solo is also great for use with singleton objects that have a one to
many relationship. Like the use case below where you have a 'Home Slider"
that has many "Slides".
* Global or default settings
* An image slider that has many slides
* A page section that has sub-sections
* A team bio with many team members
There are many cases where it makes sense for the parent in a one to many
relationship to be limited to a single instance.
Usage Example
```python
# models.py
from django.db import models
from solo.models import SingletonModel
class SiteConfiguration(SingletonModel):
site_name = models.CharField(max_length=255, default='Site Name')
maintenance_mode = models.BooleanField(default=False)
def __str__(self):
return "Site Configuration"
class Meta:
verbose_name = "Site Configuration"
`
`python
# admin.py
from django.contrib import admin
from solo.admin import SingletonModelAdmin
from config.models import SiteConfiguration
admin.site.register(SiteConfiguration, SingletonModelAdmin)
`
`python
# There is only one item in the table, you can get it this way:
from .models import SiteConfiguration
config = SiteConfiguration.objects.get()
# get_solo will create the item if it does not already exist
config = SiteConfiguration.get_solo()
```
In your model, note how you did not have to provide a `verbose_name_plural`
field -
That's because Django Solo uses the `verbose_name` instead.
If you're changing an existing model (which already has some objects stored
in the database) to a singleton model, you can explicitly provide the id of
the row in the database for django-solo to use. This can be done by setting
`singleton_instance_id` property on the model:
```python
class SiteConfiguration(SingletonModel):
singleton_instance_id = 24
|
Configuration Switches (platform-specific settings discarded)
PY312 OFF Build using Python 3.12
PY313 ON Build using Python 3.13
Package Dependencies by Type
Download groups
main |
mirror://PYPIWHL/c3/3a/c5332bb9d3d58e2b6b7ed2a4c09ea2b0b1a8e3c5fe9d8169c0867922b6f4 |
Distribution File Information
62e9c7d929620a61848515839833750ca142840051595cf5c8e617dcefc9e5cf 16862 python-src/django_solo-2.4.0-py3-none-any.whl
Ports that require python-django-solo:v13
No other ports depend on this one. |