Django тестирование абстрактных моделей - табличное отношение не существует
Я пытаюсь протестировать абстрактную модель. Я создал models.py
в каталоге тестов, где я наследую от абстрактных базовых классов. В своих тестах я импортирую из tests/models.py
, но по какой-то причине я получаю ошибку, что таблица не существует, несмотря на то, что это прекрасно работает в других проектах.
При запуске python manage.py test
я получаю следующую ошибку:
psycopg2.errors.UndefinedTable: relation "address_address" does not существует LINE 1: ...postal_code", "address_address". "country_id" FROM "адрес_а...
Вот структура файлов моего приложения:
myapp/
tests/
__init__.py
models.py
test_models.py
__init__.py
admin.py
apps.py
models.py
Вот мой tests/models.py
:
from ..models import (
AbstractAddress,
AbstractBillingAddress,
AbstractShippingAddress,
AbstractBillingShippingAddresses,
)
class Address(AbstractAddress):
pass
class BillingAddress(AbstractBillingAddress):
pass
class ShippingAddress(AbstractShippingAddress):
pass
class BillingShippingAddresses(AbstractBillingShippingAddresses):
pass
Вот пример одной из абстрактных моделей:
class AbstractAddress(AddressMixin, models.Model):
line_1 = models.CharField(_('line 1'), max_length=255, blank=True)
line_2 = models.CharField(_('line 2'), max_length=255, blank=True)
city = models.CharField(_('city'), max_length=255, blank=True)
province = models.CharField(_('state'), max_length=255, blank=True)
state = models.CharField(_('zip/postal code'), max_length=64, blank=True)
country = models.ForeignKey(
'address.Country',
blank=True,
null=True,
on_delete=models.PROTECT,
related_name='%(class)s_country',
verbose_name=_('country')
)
class Meta:
abstract = True
Я попробовал добавить app_label = 'address'
к моим тестовым моделям, но все равно получаю ту же ошибку.
Единственное, о чем я могу думать, это то, что тестовые модели наследуются от абстрактной модели, которая имеет внешний ключ к "реальной"/нетестовой модели, но я попробовал протестировать абстрактную модель другого приложения, которая не имеет никаких внешних ключей, и я все еще получаю ту же ошибку, что таблица не существует.
Я использую Django==3.2.9
. Проект, в котором этот метод тестирования работает без ошибок, использует Django==3.2.8
.