Closed
Description
Describe the bug
On trying out the basic example provided in the repo, i got the below error on migration:
Running migrations:
Traceback (most recent call last):
File "/app/manage.py", line 22, in <module>
main()
File "/app/manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "/usr/local/lib/python3.12/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python3.12/site-packages/django/core/management/__init__.py", line 436, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python3.12/site-packages/django/core/management/base.py", line 413, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/local/lib/python3.12/site-packages/django/core/management/base.py", line 459, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/django/core/management/base.py", line 107, in wrapper
res = handle_func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/django/core/management/commands/migrate.py", line 357, in handle
post_migrate_state = executor.migrate(
^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/django/db/migrations/executor.py", line 107, in migrate
self.recorder.ensure_schema()
File "/usr/local/lib/python3.12/site-packages/django/db/migrations/recorder.py", line 78, in ensure_schema
editor.create_model(self.Migration)
File "/usr/local/lib/python3.12/site-packages/django/db/backends/base/schema.py", line 525, in create_model
self.deferred_sql.extend(self._model_indexes_sql(model))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/clickhouse_backend/backend/schema.py", line 216, in _model_indexes_sql
or model._meta.index_together
^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'Options' object has no attribute 'index_together'. Did you mean: 'unique_together'?
To Reproduce
The following sample code was used:
from clickhouse_backend import models
from django.db.models import CheckConstraint, IntegerChoices, Q
from django.utils import timezone
class Event(models.ClickhouseModel):
class Action(IntegerChoices):
PASS = 1
DROP = 2
ALERT = 3
ip = models.GenericIPAddressField(default="::")
ipv4 = models.IPv4Field(default="127.0.0.1")
ip_nullable = models.GenericIPAddressField(null=True)
port = models.UInt16Field(default=0)
protocol = models.StringField(default="", low_cardinality=True)
content = models.JSONField(default=dict)
timestamp = models.DateTime64Field(default=timezone.now)
created_at = models.DateTime64Field(auto_now_add=True)
action = models.EnumField(choices=Action.choices, default=Action.PASS)
class Meta:
ordering = ["-timestamp"]
engine = models.MergeTree(
primary_key="timestamp",
order_by=("timestamp", "id"),
partition_by=models.toYYYYMMDD("timestamp"),
index_granularity=1024,
index_granularity_bytes=1 << 20,
enable_mixed_granularity_parts=1,
)
indexes = [
models.Index(
fields=["ip"],
name="ip_set_idx",
type=models.Set(1000),
granularity=4
),
models.Index(
fields=["ipv4"],
name="ipv4_bloom_idx",
type=models.BloomFilter(0.001),
granularity=1
)
]
constraints = (
CheckConstraint(
name="port_range",
check=Q(port__gte=0, port__lte=65535),
),
)
Expected behavior
This error happens on trying to run the migrate function. Also another thing i noted was that the table to get created on the migrate command besides this error. Also in the migrate.md file, in the limitations its specified that Anonymous indexes and constraints(db_index, unique, index_together, unique_together) are not supported, you must provide names explicitly.
, so does this have to do anything with the error?
edit: i tried on django=5.0 and same issue.
Versions
- ClickHouse server version: 24.9.1.3278
- Python version: 3.12
- Clickhouse-driver version: Using docker for running clickhouse
- Django version: 5.1.1
- Django clickhouse backend version: 1.3