[3.2] Adjust model indexes (#587)

This commit is contained in:
Hannes Ljungberg
2021-04-13 12:18:13 +02:00
committed by GitHub
parent e72cbb6eb5
commit e8a97e301c
2 changed files with 18 additions and 3 deletions

View File

@@ -1,10 +1,12 @@
from typing import Any, List, Optional, Sequence, Tuple, Type from typing import Any, List, Optional, Sequence, Tuple, Type, Union
from django.db.backends.base.schema import BaseDatabaseSchemaEditor from django.db.backends.base.schema import BaseDatabaseSchemaEditor
from django.db.backends.ddl_references import Statement from django.db.backends.ddl_references import Statement
from django.db.models.base import Model from django.db.models.base import Model
from django.db.models.expressions import BaseExpression, Combinable
from django.db.models.query_utils import Q from django.db.models.query_utils import Q
class Index: class Index:
model: Type[Model] model: Type[Model]
suffix: str = ... suffix: str = ...
@@ -15,14 +17,17 @@ class Index:
db_tablespace: Optional[str] = ... db_tablespace: Optional[str] = ...
opclasses: Sequence[str] = ... opclasses: Sequence[str] = ...
condition: Optional[Q] = ... condition: Optional[Q] = ...
expressions: Sequence[Union[Union[BaseExpression, Combinable]]]
include: Sequence[str]
def __init__( def __init__(
self, self,
*, *expressions: Union[BaseExpression, Combinable, str],
fields: Sequence[str] = ..., fields: Sequence[str] = ...,
name: Optional[str] = ..., name: Optional[str] = ...,
db_tablespace: Optional[str] = ..., db_tablespace: Optional[str] = ...,
opclasses: Sequence[str] = ..., opclasses: Sequence[str] = ...,
condition: Optional[Q] = ... condition: Optional[Q] = ...,
include: Optional[Sequence[str]] = ...,
) -> None: ... ) -> None: ...
def check_name(self) -> List[str]: ... def check_name(self) -> List[str]: ...
def create_sql( def create_sql(

View File

@@ -0,0 +1,10 @@
- case: model_index
main: |
from django.db import models
from django.db.models.functions import Lower
models.Index(fields=["foo"])
models.Index("foo", models.F("bar"), Lower("baz"), name="test")
models.Index("foo", name="test", opclasses=["bar"])
models.Index("foo", name="test", condition=models.Q(foo=1))
models.Index("foo", name="test", include=["bar"])