Ошибка при переносе данных с моделями из приложения django-address
Я делаю миграцию данных и использую django-address для географических адресов. Я могу сохранить адрес, и все остальное вроде бы работает, но когда я пытаюсь присвоить адрес зданию, я получаю ошибку "Invalid address value."
Файл миграции:
from django.db import migrations
def forward_data_migration(apps, schema_editor):
Address = apps.get_model("address", "Address")
Locality = apps.get_model("address", "Locality")
Property = apps.get_model("myApp", "Property")
db_alias = schema_editor.connection.alias
Locality.objects.using(db_alias).bulk_create([
Locality(name="Foo",)
])
Address.objects.using(db_alias).bulk_create([
Address(raw="1 Fake street" locality=Locality.objects.get(name="Foo"), ),
])
Property.objects.using(db_alias).bulk_create([
Property(building_name="Test building", address=Address.objects.get(raw="1 Fake street") ),
])
Модель свойства:
class Property(UUIDTimeStampedModel):
building_name = models.CharField(max_length=255)
address = AddressField(null=True, blank=True)
Адрес моделей: https://github.com/furious-luke/django-address/blob/master/address/models.py
В приложении Address, похоже, есть функция, которая проверяет, является ли передаваемое ей значение действительным экземпляром "Address", но я не знаю, почему эта проверка не проходит.
Полагаю, это небольшая ошибка в библиотеке. Историческая модель, которую вы получаете из apps.get_model("address", "Address")
, не совместима с isinstance(..., Address)
(где Address
- текущая модель).
Хотя в целом использование исторических моделей настоятельно рекомендуется, в данном случае вы вполне можете использовать текущую модель (локальный импорт from ... import Address
) вместо исторической модели при создании этих объектов.