Ошибка при переносе данных с моделями из приложения 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) вместо исторической модели при создании этих объектов.

Вернуться на верх