# Buildsheet autogenerated by ravenadm tool -- Do not edit. NAMEBASE= python-django-solo VERSION= 2.4.0 KEYWORDS= python VARIANTS= v12 v13 SDESC[v12]= Djanjo manipulator of database singletons (3.12) SDESC[v13]= Djanjo manipulator of database singletons (3.13) HOMEPAGE= https://github.com/lazybird/django-solo/ CONTACT= Python_Automaton[python@ironwolf.systems] DOWNLOAD_GROUPS= main SITES[main]= PYPIWHL/c3/3a/c5332bb9d3d58e2b6b7ed2a4c09ea2b0b1a8e3c5fe9d8169c0867922b6f4 DISTFILE[1]= django_solo-2.4.0-py3-none-any.whl:main DIST_SUBDIR= python-src DF_INDEX= 1 SPKGS[v12]= single SPKGS[v13]= single OPTIONS_AVAILABLE= PY312 PY313 OPTIONS_STANDARD= none VOPTS[v12]= PY312=ON PY313=OFF VOPTS[v13]= PY312=OFF PY313=ON DISTNAME= django_solo-2.4.0.dist-info GENERATED= yes [PY312].RUN_DEPENDS_ON= python-Django:single:v12 [PY312].USES_ON= python:v12,wheel [PY313].RUN_DEPENDS_ON= python-Django:single:v13 [PY313].USES_ON= python:v13,wheel [FILE:2873:descriptions/desc.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 [FILE:124:distinfo] 62e9c7d929620a61848515839833750ca142840051595cf5c8e617dcefc9e5cf 16862 python-src/django_solo-2.4.0-py3-none-any.whl