Я пытаюсь добавить индексы для моей абстрактной модели базового класса, чтобы ее подклассы также могли иметь такой же индекс.
Сначала у меня было следующее:
class Test(models.Model):
id = models.BigAutoField(primary_key=True)
class Meta:
abstract = True
indexes = models.Index(fields=['-id'])
class Testing1(Test):
pass
class Testing2(Test):
pass
Traceback:
File "manage.py", line 21, in <module>
main()
File "manage.py", line 17, in main
execute_from_command_line(sys.argv)
File "C:\Users\yoom\Code\test\indexTestingVel\venv\lib\site-packages\django\core\management\__init__.py", line 381, in execute_from_command_line
utility.execute()
File "C:\Users\yoom\Code\test\indexTestingVel\venv\lib\site-packages\django\core\management\__init__.py", line 357, in execute
django.setup()
File "C:\Users\yoom\Code\test\indexTestingVel\venv\lib\site-packages\django\__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "C:\Users\yoom\Code\test\indexTestingVel\venv\lib\site-packages\django\apps\registry.py", line 114, in populate
app_config.import_models()
File "C:\Users\yoom\Code\test\indexTestingVel\venv\lib\site-packages\django\apps\config.py", line 211, in import_models
self.models_module = import_module(models_module_name)
File "C:\Users\yoom\Code\test\indexTestingVel\venv\lib\importlib\__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 728, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "C:\Users\yoom\Code\test\indexTestingVel\public\models.py", line 4, in <module>
class Test(models.Model):
File "C:\Users\yoom\Code\test\indexTestingVel\venv\lib\site-packages\django\db\models\base.py", line 305, in __new__
new_class._meta.indexes = [copy.deepcopy(idx) for idx in new_class._meta.indexes]
TypeError: 'Index' object is not iterable
Это то, что я попытался затем, только чтобы получить ТОЧНУЮ ошибку:
class Test(models.Model):
id = models.AutoField(primary_key=True)
class Meta:
abstract = True
class Testing1(Test):
class Meta:
indexes = models.Index(fields=['-id'])
class Testing2(Test):
class Meta:
indexes = models.Index(fields=['-id'])
Не уверен, что делать, так как у меня больше двух подклассов, а у абстрактной модели большечем 20 столбцов.