From 118f50307cd29b8c836cd882f7a8ee2f7f8aa82d Mon Sep 17 00:00:00 2001 From: Tom Carrick Date: Thu, 6 Jan 2022 10:07:24 +0100 Subject: [PATCH] Allow expressions in UniqueConstraint (#806) * Allow expressions in UniqueConstraint * Use ellipsis * And for fields --- django-stubs/db/models/constraints.pyi | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/django-stubs/db/models/constraints.pyi b/django-stubs/db/models/constraints.pyi index cc7cf32..a9a2550 100644 --- a/django-stubs/db/models/constraints.pyi +++ b/django-stubs/db/models/constraints.pyi @@ -1,8 +1,9 @@ import enum -from typing import Any, Optional, Sequence, Tuple, Type, TypeVar +from typing import Any, Optional, Sequence, Tuple, Type, TypeVar, Union from django.db.backends.base.schema import BaseDatabaseSchemaEditor from django.db.models.base import Model +from django.db.models.expressions import Combinable from django.db.models.query_utils import Q _T = TypeVar("_T", bound="BaseConstraint") @@ -27,9 +28,15 @@ class CheckConstraint(BaseConstraint): def __init__(self, *, check: Q, name: str) -> None: ... class UniqueConstraint(BaseConstraint): - fields: Tuple[str] + expressions: Tuple[Combinable, ...] + fields: Tuple[str, ...] condition: Optional[Q] deferrable: Optional[Deferrable] def __init__( - self, *, fields: Sequence[str], name: str, condition: Optional[Q] = ..., deferrable: Optional[Deferrable] = ... + self, + *expressions: Union[str, Combinable], + fields: Optional[Sequence[str]] = ..., + name: str, + condition: Optional[Q] = ..., + deferrable: Optional[Deferrable] = ..., ) -> None: ...