Skip to content

Commit 2a2231a

Browse files
palfreysobolevn
andauthored
[5.0] Add django.db.models.GeneratedField (#1944)
* Add django.db.models.GeneratedField * Fix all the known test failures for GeneratedField * Ignore cached_col cached_property issues * Removed default values from GeneratedField * Apply suggestions from code review --------- Co-authored-by: Nikita Sobolev <mail@sobolevn.me>
1 parent 5a8e7b3 commit 2a2231a

File tree

4 files changed

+51
-3
lines changed

4 files changed

+51
-3
lines changed

django-stubs/db/models/__init__.pyi

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ from .fields import URLField as URLField
7474
from .fields import UUIDField as UUIDField
7575
from .fields.files import FileField as FileField
7676
from .fields.files import ImageField as ImageField
77+
from .fields.generated import GeneratedField as GeneratedField
7778
from .fields.json import JSONField as JSONField
7879
from .fields.proxy import OrderWrt as OrderWrt
7980
from .fields.related import ForeignKey as ForeignKey
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
from typing import Any, Iterable, Literal
2+
3+
from django.core.validators import _ValidatorCallable
4+
from django.db import models
5+
from django.db.backends.base.base import BaseDatabaseWrapper
6+
from django.db.models.expressions import Expression
7+
from django.db.models.fields import _ErrorMessagesMapping, _FieldChoices
8+
from django.db.models.sql import Query
9+
from django.utils.datastructures import DictWrapper
10+
from django.utils.functional import _StrOrPromise
11+
12+
class GeneratedField(models.Field):
13+
generated: Literal[True]
14+
db_returning: Literal[True]
15+
_query: Query | None
16+
output_field: models.Field | None
17+
18+
def __init__(
19+
self,
20+
*,
21+
expression: Expression,
22+
output_field: models.Field,
23+
db_persist: bool | None = ...,
24+
verbose_name: _StrOrPromise | None = ...,
25+
name: str | None = ...,
26+
primary_key: bool = ...,
27+
unique: bool = ...,
28+
blank: bool = ...,
29+
null: bool = ...,
30+
default: Any = ...,
31+
editable: bool = ...,
32+
auto_created: bool = ...,
33+
serialize: bool = ...,
34+
unique_for_date: str | None = ...,
35+
unique_for_month: str | None = ...,
36+
unique_for_year: str | None = ...,
37+
choices: _FieldChoices | None = ...,
38+
help_text: _StrOrPromise = ...,
39+
db_column: str | None = ...,
40+
db_comment: str | None = ...,
41+
db_tablespace: str | None = ...,
42+
validators: Iterable[_ValidatorCallable] = ...,
43+
error_messages: _ErrorMessagesMapping | None = ...,
44+
**kwargs: Any,
45+
) -> None: ...
46+
def generated_sql(self, connection: BaseDatabaseWrapper) -> tuple[str, Any]: ...
47+
def db_type_parameters(self, connection: BaseDatabaseWrapper) -> DictWrapper: ...

scripts/stubtest/allowlist.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,7 @@ django.contrib.gis.db.models.ForeignObjectRel.name
182182
django.contrib.gis.db.models.ForeignObjectRel.one_to_many
183183
django.contrib.gis.db.models.ForeignObjectRel.one_to_one
184184
django.contrib.gis.db.models.ForeignObjectRel.related_model
185+
django.contrib.gis.db.models.GeneratedField.cached_col
185186
django.contrib.gis.db.models.IntegerField.validators
186187
django.contrib.gis.db.models.Lookup.contains_aggregate
187188
django.contrib.gis.db.models.Lookup.contains_over_clause
@@ -300,6 +301,7 @@ django.db.models.ForeignObjectRel.name
300301
django.db.models.ForeignObjectRel.one_to_many
301302
django.db.models.ForeignObjectRel.one_to_one
302303
django.db.models.ForeignObjectRel.related_model
304+
django.db.models.GeneratedField.cached_col
303305
django.db.models.IntegerField.validators
304306
django.db.models.Lookup.contains_aggregate
305307
django.db.models.Lookup.contains_over_clause
@@ -313,6 +315,7 @@ django.db.models.fields.DecimalField.validators
313315
django.db.models.fields.Field.cached_col
314316
django.db.models.fields.Field.validators
315317
django.db.models.fields.IntegerField.validators
318+
django.db.models.fields.generated.GeneratedField.cached_col
316319
django.db.models.fields.related.ForeignObject.foreign_related_fields
317320
django.db.models.fields.related.ForeignObject.local_related_fields
318321
django.db.models.fields.related.ForeignObject.related_fields

scripts/stubtest/allowlist_todo_django50.txt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ django.contrib.gis.db.models.ForeignObject.get_joining_fields
7070
django.contrib.gis.db.models.ForeignObject.get_reverse_joining_fields
7171
django.contrib.gis.db.models.ForeignObjectRel.get_joining_fields
7272
django.contrib.gis.db.models.Func.allowed_default
73-
django.contrib.gis.db.models.GeneratedField
7473
django.contrib.gis.db.models.Lookup.allowed_default
7574
django.contrib.gis.db.models.Prefetch.get_current_querysets
7675
django.contrib.gis.db.models.Q.identity
@@ -181,7 +180,6 @@ django.db.models.ForeignObject.get_joining_fields
181180
django.db.models.ForeignObject.get_reverse_joining_fields
182181
django.db.models.ForeignObjectRel.get_joining_fields
183182
django.db.models.Func.allowed_default
184-
django.db.models.GeneratedField
185183
django.db.models.Lookup.allowed_default
186184
django.db.models.Prefetch.get_current_querysets
187185
django.db.models.Q.identity
@@ -206,7 +204,6 @@ django.db.models.expressions.When.allowed_default
206204
django.db.models.fields.Field.__init__
207205
django.db.models.fields.Field._get_flatchoices
208206
django.db.models.fields.Field.generated
209-
django.db.models.fields.generated
210207
django.db.models.fields.related.ForeignKey.cast_db_type
211208
django.db.models.fields.related.ForeignObject.get_joining_fields
212209
django.db.models.fields.related.ForeignObject.get_reverse_joining_fields

0 commit comments

Comments
 (0)