Миграция Django (возврат и повторное применение) не видна в pgadmin - PullRequest
0 голосов
/ 16 июня 2019

Используя Django 2.2 с PostgreSQL, я хотел что-то протестировать, имея следующую модель в приложении с именем main:

class Product(models.Model):
    ....

Файл миграции для этого этапа: 0004 _...

Я сделал коммит текущей ситуации в ветке master.Затем создал новую ветвь с именем extra_migrations и проверил ее.

В новой ветке я добавил произвольное поле в модель продукта:

class Product(models.Model):
    ....
    some_field = models.CharField(max_length=128, blank=True, null=True)

Затем я выполнил миграцию для этого изменения иприменил миграции.

Файл миграции для этого этапа: 0005 _...

Затем я зарегистрировался в главной ветви и сделал:

python manage.py migrate main 0004_.. (вернутьобратно в состояние, с которого я начал в начале этого вопроса)

Джанго говорит мне No migrations to apply, но в админке Django я больше не вижу some_field.Поэтому я подумал, что, может быть, VSCode творит здесь какое-то волшебство, хаха.

Это приводит к вопросу 1: почему Django говорит мне, что миграции не применяются, а есть?

После удаления ветки extra_migrations я решил проверить базу данных в pgadmin, и там я все еще вижу состояние миграций 0005.

Поэтому я подумал, что я умен и вернулся к миграции0003, и повторно применен 0004.

Но pgadmin (после обновления) по-прежнему показывает состояние 0005 (отображается столбец some_field), когда я возвращаюсь к миграциям 0003 или 0004.

вопрос 2: У кого-нибудь есть идеи, почему pgadmin не отражает изменения?

База данных, похоже, меняется.Потому что, когда я возвращаюсь к миграциям 0003, открывая подробное представление объекта модели Product, я получаю следующую ошибку.Возвращение к 0004 решает эту проблему.

ProgrammingError at /admin/main/product/2/change/

relation "main_product_tags" does not exist
LINE 1: ...cttag"."active" FROM "main_producttag" INNER JOIN "main_prod...
                                                             ^

Request Method:     GET
Request URL:    http://127.0.0.1:8000/admin/main/product/2/change/
Django Version:     2.2.2
Exception Type:     ProgrammingError
Exception Value:    

relation "main_product_tags" does not exist
LINE 1: ...cttag"."active" FROM "main_producttag" INNER JOIN "main_prod...
                                                             ^

Exception Location:     /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/db/backends/utils.py in _execute, line 84
Python Executable:  /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/bin/python
Python Version:     3.7.3
Python Path:    

['/home/riksch/projects/booktime',
 '/home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python37.zip',
 '/home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7',
 '/home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/lib-dynload',
 '/usr/lib/python3.7',
 '/home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages']

Server time:    Sun, 16 Jun 2019 14:53:48 +0200
Traceback Switch to copy-and-paste view

    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/db/backends/utils.py in _execute

                        return self.cursor.execute(sql, params)

         …
    ▶ Local vars
    The above exception (relation "main_product_tags" does not exist LINE 1: ...cttag"."active" FROM "main_producttag" INNER JOIN "main_prod... ^ ) was the direct cause of the following exception:
    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/core/handlers/exception.py in inner

                    response = get_response(request)

         …
    ▶ Local vars
    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/core/handlers/base.py in _get_response

                        response = self.process_exception_by_middleware(e, request)

         …
    ▶ Local vars
    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/core/handlers/base.py in _get_response

                        response = wrapped_callback(request, *callback_args, **callback_kwargs)

         …
    ▶ Local vars
    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/contrib/admin/options.py in wrapper

                        return self.admin_site.admin_view(view)(*args, **kwargs)

         …
    ▶ Local vars
    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/utils/decorators.py in _wrapped_view

                            response = view_func(request, *args, **kwargs)

         …
    ▶ Local vars
    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/views/decorators/cache.py in _wrapped_view_func

                response = view_func(request, *args, **kwargs)

         …
    ▶ Local vars
    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/contrib/admin/sites.py in inner

                    return view(request, *args, **kwargs)

         …
    ▶ Local vars
    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/contrib/admin/options.py in change_view

                return self.changeform_view(request, object_id, form_url, extra_context)

         …
    ▶ Local vars
    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/utils/decorators.py in _wrapper

                return bound_method(*args, **kwargs)

         …
    ▶ Local vars
    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/utils/decorators.py in _wrapped_view

                            response = view_func(request, *args, **kwargs)

         …
    ▶ Local vars
    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/contrib/admin/options.py in changeform_view

                    return self._changeform_view(request, object_id, form_url, extra_context)

         …
    ▶ Local vars
    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/contrib/admin/options.py in _changeform_view

                        form = ModelForm(instance=obj)

         …
    ▶ Local vars
    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/forms/models.py in __init__

                    object_data = model_to_dict(instance, opts.fields, opts.exclude)

         …
    ▶ Local vars
    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/forms/models.py in model_to_dict

                data[f.name] = f.value_from_object(instance)

         …
    ▶ Local vars
    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/db/models/fields/related.py in value_from_object

                return [] if obj.pk is None else list(getattr(obj, self.attname).all())

         …
    ▶ Local vars
    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/db/models/query.py in __iter__

                self._fetch_all()

         …
    ▶ Local vars
    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/db/models/query.py in _fetch_all

                    self._result_cache = list(self._iterable_class(self))

         …
    ▶ Local vars
    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/db/models/query.py in __iter__

                results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)

         …
    ▶ Local vars
    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/db/models/sql/compiler.py in execute_sql

                    cursor.execute(sql, params)

         …
    ▶ Local vars
    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/db/backends/utils.py in execute

                    return super().execute(sql, params)

         …
    ▶ Local vars
    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/db/backends/utils.py in execute

                return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)

         …
    ▶ Local vars
    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/db/backends/utils.py in _execute_with_wrappers

                return executor(sql, params, many, context)

         …
    ▶ Local vars
    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/db/backends/utils.py in _execute

                        return self.cursor.execute(sql, params)

         …
    ▶ Local vars
    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/db/utils.py in __exit__

                        raise dj_exc_value.with_traceback(traceback) from exc_value

         …
    ▶ Local vars
    /home/riksch/.local/share/virtualenvs/booktime-2882sU_9/lib/python3.7/site-packages/django/db/backends/utils.py in _execute

                        return self.cursor.execute(sql, params)

         …
    ▶ Local vars 
...