mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #28330 -- Prevented passing positional arguments to an Index.
Thanks Tim Graham for the review.
This commit is contained in:
		
				
					committed by
					
						 Tim Graham
						Tim Graham
					
				
			
			
				
	
			
			
			
						parent
						
							d381914aef
						
					
				
				
					commit
					617505ca89
				
			| @@ -11,11 +11,11 @@ class BrinIndex(Index): | ||||
|     # applicable. | ||||
|     max_name_length = 31 | ||||
|  | ||||
|     def __init__(self, fields=[], name=None, pages_per_range=None): | ||||
|     def __init__(self, *, pages_per_range=None, **kwargs): | ||||
|         if pages_per_range is not None and pages_per_range <= 0: | ||||
|             raise ValueError('pages_per_range must be None or a positive integer') | ||||
|         self.pages_per_range = pages_per_range | ||||
|         super().__init__(fields, name) | ||||
|         super().__init__(**kwargs) | ||||
|  | ||||
|     def deconstruct(self): | ||||
|         path, args, kwargs = super().deconstruct() | ||||
| @@ -33,10 +33,10 @@ class BrinIndex(Index): | ||||
| class GinIndex(Index): | ||||
|     suffix = 'gin' | ||||
|  | ||||
|     def __init__(self, fields=[], name=None, fastupdate=None, gin_pending_list_limit=None): | ||||
|     def __init__(self, *, fastupdate=None, gin_pending_list_limit=None, **kwargs): | ||||
|         self.fastupdate = fastupdate | ||||
|         self.gin_pending_list_limit = gin_pending_list_limit | ||||
|         super().__init__(fields, name) | ||||
|         super().__init__(**kwargs) | ||||
|  | ||||
|     def deconstruct(self): | ||||
|         path, args, kwargs = super().deconstruct() | ||||
|   | ||||
| @@ -11,7 +11,7 @@ class Index: | ||||
|     # cross-database compatibility with Oracle) | ||||
|     max_name_length = 30 | ||||
|  | ||||
|     def __init__(self, fields=[], name=None): | ||||
|     def __init__(self, *, fields=[], name=None): | ||||
|         if not isinstance(fields, list): | ||||
|             raise ValueError('Index.fields must be a list.') | ||||
|         if not fields: | ||||
|   | ||||
| @@ -12,7 +12,7 @@ available from the ``django.contrib.postgres.indexes`` module. | ||||
| ``BrinIndex`` | ||||
| ============= | ||||
|  | ||||
| .. class:: BrinIndex(fields=[], name=None, pages_per_range=None) | ||||
| .. class:: BrinIndex(pages_per_range=None, **options) | ||||
|  | ||||
|     Creates a `BRIN index | ||||
|     <https://www.postgresql.org/docs/current/static/brin-intro.html>`_. | ||||
| @@ -22,7 +22,7 @@ available from the ``django.contrib.postgres.indexes`` module. | ||||
| ``GinIndex`` | ||||
| ============ | ||||
|  | ||||
| .. class:: GinIndex(fields=[], name=None, fastupdate=None, gin_pending_list_limit=None) | ||||
| .. class:: GinIndex(fastupdate=None, gin_pending_list_limit=None, **options) | ||||
|  | ||||
|     Creates a `gin index | ||||
|     <https://www.postgresql.org/docs/current/static/gin.html>`_. | ||||
|   | ||||
| @@ -404,6 +404,17 @@ For custom management commands that use options not created using | ||||
|     class MyCommand(BaseCommand): | ||||
|         stealth_options = ('option_name', ...) | ||||
|  | ||||
| Indexes no longer accept positional arguments | ||||
| --------------------------------------------- | ||||
|  | ||||
| For example:: | ||||
|  | ||||
|     models.Index(['headline', '-pub_date'], 'index_name') | ||||
|  | ||||
| raises an exception and should be replaced with:: | ||||
|  | ||||
|     models.Index(fields=['headline', '-pub_date'], name='index_name') | ||||
|  | ||||
| Miscellaneous | ||||
| ------------- | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user