mirror of
https://github.com/SectorLabs/django-localized-fields.git
synced 2025-12-14 07:42:24 +03:00
Add sphinx based docs
This commit is contained in:
100
docs/source/constraints.rst
Normal file
100
docs/source/constraints.rst
Normal file
@@ -0,0 +1,100 @@
|
||||
.. _unique_together: https://docs.djangoproject.com/en/2.2/ref/models/options/#unique-together
|
||||
|
||||
Constraints
|
||||
===========
|
||||
|
||||
All constraints are enforced by PostgreSQL. Constraints can be applied to all fields documented in :ref:`Fields <fields>`.
|
||||
|
||||
.. warning::
|
||||
|
||||
Don't forget to run ``python manage.py makemigrations`` after modifying constraints.
|
||||
|
||||
Required/optional
|
||||
-----------------
|
||||
|
||||
|
||||
* Default language required and all other languages optional:
|
||||
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
class MyModel(models.Model):
|
||||
title = LocalizedField()
|
||||
|
||||
|
||||
* All languages are optional and the field itself can be ``None``:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
class MyModel(models.Model):
|
||||
title = LocalizedField(blank=True, null=True, required=False)
|
||||
|
||||
* All languages are optional but the field itself cannot be ``None``:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
class MyModel(models.Model):
|
||||
title = LocalizedField(blank=False, null=False, required=False)
|
||||
|
||||
|
||||
* Make specific languages required:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
class MyModel(models.Model):
|
||||
title = LocalizedField(blank=False, null=False, required=['en', 'ro'])
|
||||
|
||||
|
||||
* Make all languages required:
|
||||
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
class MyModel(models.Model):
|
||||
title = LocalizedField(blank=False, null=False, required=True)
|
||||
|
||||
|
||||
Uniqueness
|
||||
----------
|
||||
|
||||
.. note::
|
||||
|
||||
Uniqueness is enforced by PostgreSQL by creating unique indexes on hstore keys. Keep this is mind when setting up unique constraints. If you already have a unique constraint in place, you do not have to add an additional index as uniqueness is enforced by creating an index.
|
||||
|
||||
|
||||
* Enforce uniqueness for one or more languages:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
class MyModel(models.Model):
|
||||
title = LocalizedField(uniqueness=['en', 'ro'])
|
||||
|
||||
|
||||
* Enforce uniqueness for all languages:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from localized_fields.util import get_language_codes
|
||||
|
||||
class MyModel(models.Model):
|
||||
title = LocalizedField(uniqueness=get_language_codes())
|
||||
|
||||
|
||||
* Enforce uniqueness for one or more languages together:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
class MyModel(models.Model):
|
||||
title = LocalizedField(uniqueness=[('en', 'ro')])
|
||||
|
||||
This is similar to Django's `unique_together`_.
|
||||
|
||||
|
||||
* Enforce uniqueness for all languages together:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from localized_fields.util import get_language_codes
|
||||
|
||||
class MyModel(models.Model):
|
||||
title = LocalizedField(uniqueness=[(*get_language_codes())])
|
||||
Reference in New Issue
Block a user