Pytest --no-migrations выбрасывает сообщение "отношение уже существует".
У меня есть довольно большое приложение django, которое я обычно тестирую с помощью pytest --no-migrations
(поскольку миграция занимает много времени), но поскольку я добавил отношения ManyToMany таким образом:
class Object(models.Model):
# ...
collections = models.ManyToManyField(Collection, through=Collection.products.through, blank=True)
class Collection(models.Model):
# ...
products = models.ManyToManyField("objects.Object", blank=True)
Запуск pytest
работает нормально, но запуск pytest --nomigrations
выкидывает эту ошибку на каждом тесте:
self = <django.db.backends.utils.CursorWrapper object at 0xffff91150820>
sql = 'CREATE TABLE "brand_collections_collection_products" ("id" bigserial NOT NULL PRIMARY KEY, "collection_id" bigint NOT NULL, "object_id" bigint NOT NULL)', params = None
ignored_wrapper_args = (False, {'connection': <django.db.backends.postgresql.base.DatabaseWrapper object at 0xffff94ed1330>, 'cursor': <django.db.backends.utils.CursorWrapper object at 0xffff91150820>})
def _execute(self, sql, params, *ignored_wrapper_args):
self.db.validate_no_broken_transaction()
with self.db.wrap_database_errors:
if params is None:
# params default might be backend specific.
> return self.cursor.execute(sql)
E django.db.utils.ProgrammingError: relation "brand_collections_collection_products" already exists
/usr/local/lib/python3.10/site-packages/django/db/backends/utils.py:82: ProgrammingError
Я понятия не имею, что означает эта ошибка в данном контексте, или почему она внезапно срабатывает, и я не смог найти простой ответ в Интернете...