При выполнении миграции, приложение обращается к несуществующему столбцу

Прошу прощение за огромный кусок кода, но я и правда уже не знаю, что с этим делать. Я использую smart_selects и его функционал GroupedForeignKey. При выполнении команды makemigrations мое приложение по какой-то причине обращается к столбцу таблицы БД, который я только-что добавил и ради которого делаю миграцию. Если я GroupedForeignKey заменяю на models.ForeignKey ошибка пропадает. Также ошибка пропадет, если я закомментирую эти строки в своем views.py:

from main.FilterSet import WorkFilter, GroupFilter
from main.forms import WorksForm, GroupForm, GroupForAdminAndAdministrationForm

В момент выполнения команды makemigrations я получаю ошибку:

Traceback (most recent call last):
  File "C:\Users\den00\PycharmProjects\DjangoProjects\work-server\venv\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
psycopg2.errors.UndefinedColumn: ОШИБКА:  столбец Compressor_station.test не существует
LINE 1: ...."name_cs", "Compressor_station"."water_direction", "Compresso...
                                                             ^


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\den00\PycharmProjects\DjangoProjects\work-server\work\manage.py", line 22, in <module>
    main()
  File "C:\Users\den00\PycharmProjects\DjangoProjects\work-server\work\manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "C:\Users\den00\PycharmProjects\DjangoProjects\work-server\venv\lib\site-packages\django\core\management\__init__.py", line 419, in execute_from_command_line
    utility.execute()
  File "C:\Users\den00\PycharmProjects\DjangoProjects\work-server\venv\lib\site-packages\django\core\management\__init__.py", line 413, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\den00\PycharmProjects\DjangoProjects\work-server\venv\lib\site-packages\django\core\management\base.py", line 354, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Users\den00\PycharmProjects\DjangoProjects\work-server\venv\lib\site-packages\django\core\management\base.py", line 393, in execute
    self.check()
  File "C:\Users\den00\PycharmProjects\DjangoProjects\work-server\venv\lib\site-packages\django\core\management\base.py", line 419, in check
    all_issues = checks.run_checks(
  File "C:\Users\den00\PycharmProjects\DjangoProjects\work-server\venv\lib\site-packages\django\core\checks\registry.py", line 76, in run_checks
    new_errors = check(app_configs=app_configs, databases=databases)
  File "C:\Users\den00\PycharmProjects\DjangoProjects\work-server\venv\lib\site-packages\django\core\checks\urls.py", line 13, in check_url_config
    return check_resolver(resolver)
  File "C:\Users\den00\PycharmProjects\DjangoProjects\work-server\venv\lib\site-packages\django\core\checks\urls.py", line 23, in check_resolver
    return check_method()
  File "C:\Users\den00\PycharmProjects\DjangoProjects\work-server\venv\lib\site-packages\django\urls\resolvers.py", line 416, in check
    for pattern in self.url_patterns:
  File "C:\Users\den00\PycharmProjects\DjangoProjects\work-server\venv\lib\site-packages\django\utils\functional.py", line 48, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Users\den00\PycharmProjects\DjangoProjects\work-server\venv\lib\site-packages\django\urls\resolvers.py", line 602, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "C:\Users\den00\PycharmProjects\DjangoProjects\work-server\venv\lib\site-packages\django\utils\functional.py", line 48, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Users\den00\PycharmProjects\DjangoProjects\work-server\venv\lib\site-packages\django\urls\resolvers.py", line 595, in urlconf_module
    return import_module(self.urlconf_name)
  File "C:\Users\den00\AppData\Local\Programs\Python\Python39\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "C:\Users\den00\PycharmProjects\DjangoProjects\work-server\work\work\urls.py", line 11, in <module>
    from main.views import views
  File "C:\Users\den00\PycharmProjects\DjangoProjects\work-server\work\main\views\views.py", line 24, in <module>
    from main.forms import WorksForm, GroupForm, GroupForAdminAndAdministrationForm
  File "C:\Users\den00\PycharmProjects\DjangoProjects\work-server\work\main\forms.py", line 24, in <module>
    class GroupForm(ModelForm):
  File "C:\Users\den00\PycharmProjects\DjangoProjects\work-server\venv\lib\site-packages\django\forms\models.py", line 261, in __new__
    fields = fields_for_model(
  File "C:\Users\den00\PycharmProjects\DjangoProjects\work-server\venv\lib\site-packages\django\forms\models.py", line 183, in fields_for_model
    formfield = f.formfield(**kwargs)
    return self.cursor.execute(sql, params)
  File "C:\Users\den00\PycharmProjects\DjangoProjects\work-server\venv\lib\site-packages\django\db\utils.py", line 90, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "C:\Users\den00\PycharmProjects\DjangoProjects\work-server\venv\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: ОШИБКА:  столбец Compressor_station.test не существует
LINE 1: ...."name_cs", "Compressor_station"."water_direction", "Compresso...
                                                             ^

Models.py

class Filial(models.Model):

    id_filial = models.AutoField(primary_key=True, verbose_name='id филиала')
    name_filial = models.CharField(max_length=256, verbose_name='Наименование филиала')

class CompressorStation(models.Model):

    id_cs = models.AutoField(primary_key=True,)

    name_cs = models.CharField(max_length=256,')

    water_direction = models.IntegerField(unique=True, blank=True, null=True)

    test = models.IntegerField(blank=True, null=True)

    id_filial = models.ForeignKey('Filial', models.DO_NOTHING, blank=True, null=True,
                                  related_name='related_name_filial')

    class Meta:
        db_table = 'Compressor_station'


class PumpingUnit(models.Model):
    id_gpu = models.AutoField(primary_key=True, verbose_name='id агрегата')
   
    name_gpu = models.CharField(max_length=256,)

    id_cs = models.ForeignKey('CompressorStation', models.DO_NOTHING, blank=True, null=True,
                              related_name='related_name_cs')


class Group(models.Model):
    id_group = models.AutoField(primary_key=True,)

    id_filial = models.ForeignKey('Filial', models.DO_NOTHING, related_name='filial')

    id_cs = GroupedForeignKey(CompressorStation, "id_filial", on_delete=models.SET_NULL, blank=False, null=True, related_name='cs')

    id_gpu = GroupedForeignKey(PumpingUnit, "id_cs", on_delete=models.SET_NULL, blank=False, null=True, related_name='gpu')

    name_group = models.CharField(max_length=256)

Forms.py

class GroupForAdminAndAdministrationForm(ModelForm):
    start_date = MyDateField(label='Укажите дату начала планируемых работ *', )
    end_date = MyDateField(label='Укажите дату окончания планируемых работ *', )

    class Meta:
        model = Group
        fields = [
            'id_filial', 'id_cs',
            'id_gpu',
            'name_group', 'start_date', 'end_date', 'short_description']

        widgets = {
            "id_filial": Select(attrs={
                'class': 'form-select',
            }),

            "id_cs": Select(attrs={
                'class': 'form-select',
            }),

            "id_gpu": Select(attrs={
                'class': 'form-select'
            }),

            "name_group": Textarea(attrs={
                'class': 'form-control',
                'placeholder': 'Укажите наименование группы работ',
                'style': 'height: 70px'
            }),
        }

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.test = None
        self.fields['id_cs'].queryset = CompressorStation.objects.none()
        if 'id_filial' in self.data:
            try:
                id_filial = int(self.data.get('id_filial'))
                self.fields['id_cs'].queryset = CompressorStation.objects.filter(id_filial=id_filial).order_by(
                    'name_cs')
            except (ValueError, TypeError):
                pass  # invalid input from the client; ignore and fallback to empty gpu queryset
        elif self.instance.id_cs:
            self.fields['id_cs'].queryset = self.instance.id_filial.related_name_filial.all().order_by('name_cs')

        self.fields['id_gpu'].queryset = PumpingUnit.objects.none()
        if 'id_cs' in self.data:
            try:
                id_cs = int(self.data.get('id_cs'))
                self.fields['id_gpu'].queryset = PumpingUnit.objects.filter(id_cs=id_cs).order_by('name_gpu')
            except (ValueError, TypeError):
                pass  # invalid input from the client; ignore and fallback to empty gpu queryset
        elif self.instance.id_gpu:
            self.fields['id_gpu'].queryset = self.instance.id_cs.related_name_cs.all().order_by('name_gpu')

class WorksForm(ModelForm):
    date_work = MyDateField(label='Укажите дату выполнения работы', )

    class Meta:
        model = Works
        fields = ['name_work', 'date_work',]

        widgets = {
            "name_work": Textarea(attrs={
                'class': 'form-control',
                'placeholder': 'Укажите наименование работы',
                'style': 'height: 70px'
            }),
        }

Filters.py

class GroupFilter(filters.FilterSet):
    start_date = DateFromToRangeFilter(widget=RangeWidget(attrs={'type': 'date'}), label='Дата начала работ')

    end_date = DateFromToRangeFilter(widget=RangeWidget(attrs={'type': 'date'}), label='Дата окончания работ')

    search_name_group = filters.CharFilter(method='filter_search', label='Наименование группы работ')

    def filter_search(self, queryset, name, value):
        return queryset.annotate(search=SearchVector('name_group', )).filter(search=value)

    class Meta:
        model = Group
        fields = ['id_filial', 'id_cs', 'id_gpu', 'search_name_group', 'start_date', 'end_date', ]


class WorkFilter(filters.FilterSet):
    date_work = DateFromToRangeFilter(widget=RangeWidget(attrs={'type': 'date'}), label='Дата выполнения')

    search_name_work = filters.CharFilter(method='filter_search', label='Наименование работы')
    search_name_organization = filters.CharFilter(method='filter_search', label='Наименование организации')

    def filter_search(self, queryset, name, value):
        return queryset.annotate(search=SearchVector('name_work', 'name_organization')).filter(search=value)

    class Meta:
        model = Works
        fields = ['search_name_work', 'search_name_organization', 'date_work']
Вернуться на верх