plain.models 0.37.0__tar.gz → 0.38.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {plain_models-0.37.0 → plain_models-0.38.0}/PKG-INFO +1 -1
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/CHANGELOG.md +10 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/query.py +10 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/pyproject.toml +1 -1
- {plain_models-0.37.0 → plain_models-0.38.0}/.gitignore +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/LICENSE +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/README.md +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/README.md +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/__init__.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/aggregates.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/__init__.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/base/__init__.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/base/base.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/base/client.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/base/creation.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/base/features.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/base/introspection.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/base/operations.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/base/schema.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/base/validation.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/ddl_references.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/mysql/__init__.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/mysql/base.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/mysql/client.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/mysql/compiler.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/mysql/creation.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/mysql/features.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/mysql/introspection.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/mysql/operations.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/mysql/schema.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/mysql/validation.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/postgresql/__init__.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/postgresql/base.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/postgresql/client.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/postgresql/creation.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/postgresql/features.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/postgresql/introspection.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/postgresql/operations.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/postgresql/schema.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/sqlite3/__init__.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/sqlite3/_functions.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/sqlite3/base.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/sqlite3/client.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/sqlite3/creation.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/sqlite3/features.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/sqlite3/introspection.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/sqlite3/operations.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/sqlite3/schema.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/utils.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backups/__init__.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backups/cli.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backups/clients.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backups/core.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/base.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/cli.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/config.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/connections.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/constants.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/constraints.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/database_url.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/db.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/default_settings.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/deletion.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/entrypoints.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/enums.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/exceptions.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/expressions.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/fields/__init__.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/fields/json.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/fields/mixins.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/fields/related.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/fields/related_descriptors.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/fields/related_lookups.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/fields/reverse_related.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/forms.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/functions/__init__.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/functions/comparison.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/functions/datetime.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/functions/math.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/functions/mixins.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/functions/text.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/functions/window.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/indexes.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/lookups.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/manager.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/migrations/__init__.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/migrations/autodetector.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/migrations/exceptions.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/migrations/executor.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/migrations/graph.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/migrations/loader.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/migrations/migration.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/migrations/operations/__init__.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/migrations/operations/base.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/migrations/operations/fields.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/migrations/operations/models.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/migrations/operations/special.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/migrations/optimizer.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/migrations/questioner.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/migrations/recorder.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/migrations/serializer.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/migrations/state.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/migrations/utils.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/migrations/writer.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/options.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/otel.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/preflight.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/query_utils.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/registry.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/sql/__init__.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/sql/compiler.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/sql/constants.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/sql/datastructures.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/sql/query.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/sql/subqueries.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/sql/where.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/test/__init__.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/test/pytest.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/test/utils.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/transaction.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/plain/models/utils.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/tests/app/examples/migrations/0001_initial.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/tests/app/examples/migrations/0002_test_field_removed.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/tests/app/examples/migrations/0003_deleteparent_childsetnull_childsetdefault_and_more.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/tests/app/examples/migrations/__init__.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/tests/app/examples/models.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/tests/app/settings.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/tests/app/urls.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/tests/test_database_url.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/tests/test_delete_behaviors.py +0 -0
- {plain_models-0.37.0 → plain_models-0.38.0}/tests/test_models.py +0 -0
@@ -1,5 +1,15 @@
|
|
1
1
|
# plain-models changelog
|
2
2
|
|
3
|
+
## [0.38.0](https://github.com/dropseed/plain/releases/plain-models@0.38.0) (2025-07-21)
|
4
|
+
|
5
|
+
### What's changed
|
6
|
+
|
7
|
+
- Added `get_or_none()` method to QuerySet which returns a single object matching the given arguments or None if no object is found ([48e07bf](https://github.com/dropseed/plain/commit/48e07bf))
|
8
|
+
|
9
|
+
### Upgrade instructions
|
10
|
+
|
11
|
+
- No changes required
|
12
|
+
|
3
13
|
## [0.37.0](https://github.com/dropseed/plain/releases/plain-models@0.37.0) (2025-07-18)
|
4
14
|
|
5
15
|
### What's changed
|
@@ -570,6 +570,16 @@ class QuerySet:
|
|
570
570
|
)
|
571
571
|
)
|
572
572
|
|
573
|
+
def get_or_none(self, *args, **kwargs):
|
574
|
+
"""
|
575
|
+
Perform the query and return a single object matching the given
|
576
|
+
keyword arguments, or None if no object is found.
|
577
|
+
"""
|
578
|
+
try:
|
579
|
+
return self.get(*args, **kwargs)
|
580
|
+
except self.model.DoesNotExist:
|
581
|
+
return None
|
582
|
+
|
573
583
|
def create(self, **kwargs):
|
574
584
|
"""
|
575
585
|
Create a new object with the given kwargs, saving it to the database
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{plain_models-0.37.0 → plain_models-0.38.0}/plain/models/backends/postgresql/introspection.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{plain_models-0.37.0 → plain_models-0.38.0}/tests/app/examples/migrations/0002_test_field_removed.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|