Я должен определить класс code.Spatial, например primary_key и codels.LScharacteristic codels.PlannedUsing как внешний ключ.Я сталкиваюсь с этим, когда я пытался мигрировать: ProgrammingError: ERROR: столбец идентификатора, указанный в ограничении внешнего ключа, не существует.
Полный журнал UPD : Вышеуказанное исключение было прямой причинойследующее исключение:
Traceback (последний вызов был последним): файл "manage.py", строка 23, в файле execute_from_command_line (sys.argv) "/ home / user / MyProjects / forest-venv / lib /python3.5 / site-packages / django / core / management / init .py ", строка 371, в файле execute_from_command_line utility.execute ()" / home / user / MyProjects / forest-venv / lib /python3.5 / site-packages / django / core / management / init .py ", строка 365, в файле execute self.fetch_command (подкоманда) .run_from_argv (self.argv) файл" / home / user /MyProjects / forest-venv / lib / python3.5 / site-packages / django / core / management / base.py ", строка 288, в файле run_from_argv self.execute (* args, ** cmd_options)" / home / user /MyProjects / forest-venv / lib / python3.5 / site-packages / django / core / management / base.py ", строка 335, в исполняемой программеt = self.handle (* args, ** options) Файл "/home/user/MyProjects/forest-venv/lib/python3.5/site-packages/django/core/management/commands/migrate.py", строка200, в дескрипторе fake_initial = fake_initial, файл "/home/user/MyProjects/forest-venv/lib/python3.5/site-packages/django/db/migrations/executor.py", строка 117, в состоянии миграции = self._migrate_all_forwards (состояние, план, полный_план, поддельный = поддельный, поддельный_должный = поддельный_инитальный) Файл "/home/user/MyProjects/forest-venv/lib/python3.5/site-packages/django/db/migrations/executor.py"строка 147, в _migrate_all_forwards state = self.apply_migration (состояние, миграция, fake = fake, fake_initial = fake_initial) Файл "/home/user/MyProjects/forest-venv/lib/python3.5/site-packages/django/db/migrations/executor.py ", строка 244, в файле apply_migration state =igration.apply (state, schema_editor)" /home/user/MyProjects/forest-venv/lib/python3.5/site-packages/django/db/migrations /igration.py ", строка 122, в приложении apply.database_forwards (self.app_label, schema_editor, old_state, project_state) Файл "/home/user/MyProjects/forest-venv/lib/python3.5/site-packages/django/db/migrations/operations/fields.py", строка 216, в database_forwards schema_editor.alter_field (from_model, from_field, to_field) Файл "/home/user/MyProjects/forest-venv/lib/python3.5/site-packages/django/db/backends/base/schema.py", строка 525, в alter_field old_db_params, new_db_params,строгий) Файл "/home/user/MyProjects/forest-venv/lib/python3.5/site-packages/django/db/backends/postgresql/schema.py", строка 122, в _alter_field new_db_params, строгий, файл "/home / user / MyProjects / forest-venv / lib / python3.5 / site-packages / django / db / backends / base / schema.py ", строка 750, в _alter_field self.execute (self._create_fk_sql (модель, new_field,Файл " fk % (to_table) s _% (to_column) s")) "/home/user/MyProjects/forest-venv/lib/python3.5/site-packages/django/db/backends/base / schema.py ", строка 133, в файле execute cursor.execute (sql, params)" /home/user/MyProjects/forest-venv/lib/python3.5/site-packages/django / db / backends / utils.py ", строка 100, в файле execute выполнить super (). execute (sql, params) Файл" /home/user/MyProjects/forest-venv/lib/python3.5/site-packages/django / db / backends / utils.py ", строка 68, при выполнении возвращает self._execute_with_wrappers (sql, params, many = False, файл executor = self._execute)" / home / user / MyProjects / forest-venv / lib /python3.5 / site-packages / django / db / backends / utils.py ", строка 77, в файле _execute_with_wrappers return executor (файл sql, params, many, context)" / home / user / MyProjects / forest-venv / lib /python3.5 / site-packages / django / db / backends / utils.py ", строка 85, в _execute возвращает self.cursor.execute (sql, params)Файл "/home/user/MyProjects/forest-venv/lib/python3.5/site-packages/django/db/utils.py", строка 89, в выход повышение dj_exc_value.with_traceback (traceback)из файла exc_value "/home/user/MyProjects/forest-venv/lib/python3.5/site-packages/django/db/backends/utils.py", строка 85, в _execute возвращают self.cursor.execute (sql,params)
но в моей модели нет столбца идентификатора:
from django.db import models
from django.utils.translation import ugettext_lazy as _
from renter.models import RefAbstract, Renter
from django.contrib.gis.db import models
from textwrap import shorten
class Unitt(RefAbstract):
....//some classes
class Task(RefAbstract):
class Meta(RefAbstract.Meta):
verbose_name = 'task'
verbose_name_plural = 'tasks'
class Spatial(models.Model):
codeq = models.IntegerField('no',help_text='no')
code = models.PositiveIntegerField('cutare',primary_key=True,help_text='cutare')//unique column
codeV = models.IntegerField('novi',help_text='novi')
renter = models.ForeignKey(Renter, on_delete=models.DO_NOTHING, verbose_name='renter')
geometry = models.MultiPolygonField(geography=True, verbose_name='geometry')
class Meta:
verbose_name = 'cutarea'
verbose_name_plural = 'cutarea'
class LScharacteristic(models.Model):
codels = models.ForeignKey(Spatial, on_delete=models.DO_NOTHING, verbose_name = 'cutarea')// Foreign Key
tract = models.CharField('tract',max_length = 80, help_text='tract')
task = models.ForeignKey(Task, on_delete=models.DO_NOTHING, verbose_name='task')
totalarea = models.PositiveIntegerField('totarea',help_text = 'totarea')
explarea = models.PositiveIntegerField('exarea',help_text = 'exarea')
protecttype = models.CharField('category',max_length = 50, help_text = 'category')
class Meta:
verbose_name = 'characteristic'
verbose_name_plural = 'characteristics'
class PlannedUsing(models.Model):
codels = models.ForeignKey(Spatial, on_delete=models.DO_NOTHING, verbose_name = 'cutarea') // Foreign Key
codeq = models.IntegerField(help_text='number')
cutareaShape = models.ForeignKey(CutareaShape, on_delete=models.DO_NOTHING, verbose_name='form')
cuttype = models.ForeignKey(CutareaType, on_delete=models.DO_NOTHING, verbose_name='type1')
managetype = models.ForeignKey(ManageType, on_delete=models.DO_NOTHING, verbose_name='type2')
unit = models.ForeignKey(Unitt, on_delete=models.DO_NOTHING, verbose_name='unit')
composition = models.ForeignKey(Composition, on_delete=models.DO_NOTHING, verbose_name='sort')
assortment = models.ForeignKey(Assortment, on_delete=models.DO_NOTHING, verbose_name='assort)
class Meta:
verbose_name = 'planus'
verbose_name_plural = 'planuss'
Что такое столбец идентификатора?Почему существует столбец id, если я их не определяю?Как я могу это исправить?