1from .registry import models_registry, register_model # noqa Create the registry first
2from . import (
3 preflight, # noqa Imported for side effects (registers preflight checks)
4)
5
6# Imports that would create circular imports if sorted
7from .base import Model
8from .constraints import CheckConstraint, UniqueConstraint
9from .db import IntegrityError, db_connection
10from .deletion import CASCADE, DO_NOTHING, PROTECT, RESTRICT, SET, SET_DEFAULT, SET_NULL
11from .enums import IntegerChoices, TextChoices
12from .fields import (
13 BigIntegerField,
14 BinaryField,
15 BooleanField,
16 CharField,
17 DateField,
18 DateTimeField,
19 DecimalField,
20 DurationField,
21 EmailField,
22 FloatField,
23 GenericIPAddressField,
24 IntegerField,
25 PositiveBigIntegerField,
26 PositiveIntegerField,
27 PositiveSmallIntegerField,
28 PrimaryKeyField,
29 SmallIntegerField,
30 TextField,
31 TimeField,
32 URLField,
33 UUIDField,
34)
35from .fields.json import JSONField
36from .fields.timezones import TimeZoneField
37from .fields.related import (
38 ForeignKeyField,
39 ManyToManyField,
40)
41from .fields.reverse_descriptors import (
42 ReverseForeignKey,
43 ReverseManyToMany,
44)
45from .indexes import Index
46from .options import Options
47from .query import QuerySet
48from .query_utils import Q
49from . import types
50
51# This module exports the user-facing API for defining model classes,
52# with a secondary focus on the most common query utilities like Q.
53# Advanced query-time features (aggregates, expressions, etc.) should be
54# imported from their specific modules (e.g., plain.models.aggregates).
55__all__ = [
56 # From constraints
57 "CheckConstraint",
58 "UniqueConstraint",
59 # From enums
60 "IntegerChoices",
61 "TextChoices",
62 # From fields
63 "BigIntegerField",
64 "BinaryField",
65 "BooleanField",
66 "CharField",
67 "DateField",
68 "DateTimeField",
69 "DecimalField",
70 "DurationField",
71 "EmailField",
72 "FloatField",
73 "GenericIPAddressField",
74 "IntegerField",
75 "PositiveBigIntegerField",
76 "PositiveIntegerField",
77 "PositiveSmallIntegerField",
78 "PrimaryKeyField",
79 "SmallIntegerField",
80 "TextField",
81 "TimeField",
82 "URLField",
83 "UUIDField",
84 # From fields.json
85 "JSONField",
86 # From fields.timezones
87 "TimeZoneField",
88 # From indexes
89 "Index",
90 # From deletion
91 "CASCADE",
92 "DO_NOTHING",
93 "PROTECT",
94 "RESTRICT",
95 "SET",
96 "SET_DEFAULT",
97 "SET_NULL",
98 # From options
99 "Options",
100 # From query
101 "QuerySet",
102 # From query_utils
103 "Q",
104 # From base
105 "Model",
106 # From fields.related
107 "ForeignKeyField",
108 "ManyToManyField",
109 # From fields.reverse_descriptors
110 "ReverseForeignKey",
111 "ReverseManyToMany",
112 # From db
113 "db_connection",
114 "IntegrityError",
115 # From registry
116 "register_model",
117 "models_registry",
118 # Typed field imports
119 "types",
120]