Добрый день, товарищи.
Есть проект на django 1.3 (python 2.7), который я успешно обновил до django 1.10 (python 3.4).
Проблема возникла только с двумя моделями, связанными как ManyToMany, другие подобные модели по-прежнему работают. Вероятно, я не учёл какие-то изменения в ORM. Код:
class Dataset(HistoryModel):
"""
Класс для отчета по расходу ресурсов. Содержит редактируемую структуру полей.
"""
name = models.CharField('Название набора данных', max_length=300)
fields = models.ManyToManyField(DatasetField, verbose_name='Поля набора данных', db_table="data_proxy_fields")
class Meta:
verbose_name = 'Набор данных'
ordering = ['name']
db_table = "data_proxy"
class DatasetField(HistoryModel):
"""
Поле набора данных.
"""
name = models.CharField('Пользовательское название', max_length=300)
model_content_type = models.ForeignKey(ContentType)
index = models.IntegerField('Индекс поля', default=0)
class Meta:
verbose_name = "Поле набора данных"
ordering = ['model_content_type__name', 'index']
db_table = "dataset_field"
Где обнаружилась ошибка:
dataset = Dataset.objects.get(id=dataset_id)
return serializers.serialize("json", dataset.fields.all())
Traceback (most recent call last):
File "/WORK/daily/project/project/dataset/views.py", line 451, in get_all_fields
return serializers.serialize("json", dataset.fields.all())
File "/WORK/envs/dj1.10/lib/python3.4/site-packages/django/core/serializers/__init__.py", line 129, in serialize
s.serialize(queryset, **options)
File "/WORK/envs/dj1.10/lib/python3.4/site-packages/django/core/serializers/base.py", line 79, in serialize
for count, obj in enumerate(queryset, start=1):
File "/WORK/envs/dj1.10/lib/python3.4/site-packages/django/db/models/query.py", line 256, in __iter__
self._fetch_all()
File "/WORK/envs/dj1.10/lib/python3.4/site-packages/django/db/models/query.py", line 1087, in _fetch_all
self._result_cache = list(self.iterator())
File "/WORK/envs/dj1.10/lib/python3.4/site-packages/django/db/models/query.py", line 54, in __iter__
results = compiler.execute_sql()
File "/WORK/envs/dj1.10/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 824, in execute_sql
sql, params = self.as_sql()
File "/WORK/envs/dj1.10/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 369, in as_sql
extra_select, order_by, group_by = self.pre_sql_setup()
File "/WORK/envs/dj1.10/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 47, in pre_sql_setup
order_by = self.get_order_by()
File "/WORK/envs/dj1.10/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 293, in get_order_by
field, self.query.get_meta(), default_order=asc))
File "/WORK/envs/dj1.10/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 553, in find_ordering_name
field, targets, alias, joins, path, opts = self._setup_joins(pieces, opts, alias)
File "/WORK/envs/dj1.10/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 586, in _setup_joins
pieces, opts, alias)
File "/WORK/envs/dj1.10/lib/python3.4/site-packages/django/db/models/sql/query.py", line 1402, in setup_joins
names, opts, allow_many, fail_on_missing=True)
File "/WORK/envs/dj1.10/lib/python3.4/site-packages/django/db/models/sql/query.py", line 1327, in names_to_path
"Choices are: %s" % (name, ", ".join(available)))
django.core.exceptions.FieldError: Cannot resolve keyword 'name' into field. Choices are: app_label, datasetfield, id, logentry, model, permission
Я думаю, что что-то не так в коде самих моделей, но что именно - выяснить не удалось.
Пытался дебажить, но ухожу в глубины orm, вряд ли ошибка там.
Прошу помощи, поскольку уже 3 дня бьюсь над кодом и прочёсываю stackoverflow - безрезультатно.