Ошибка при импорте приспособления django с естественным ключом

В контексте проекта django я хочу создать некоторые примеры данных в виде фикстуры. Я экспортировал свои данные с естественным ключом, чтобы избежать любой ночевки данных при импорте, но я не могу импортировать данные вообще.

Приспособление было создано с помощью следующей команды :

python manage.py dumpdata --format yaml --natural-primary --natural-foreign conformity.policy conformity.measure  > conformity/fixture/NIST.yaml

Я попытался импортировать приспособление с помощью следующей команды :

python manage.py loaddata conformity/fixture/NIST.yaml

но у меня следующая ошибка

django.core.serializers.base.DeserializationError: Проблема при установке приспособления 'conformity/fixture/NIST.yaml': [''Значение "NIST Cybersecurity Framwork" должно быть целым числом.'']: (conformity.measure:pk=None) field_value was 'NIST Cybersecurity Framwork'

.

Мне кажется, что django не понимает данные правильно и пытается использовать натуральный ключ непосредственно как первичный ключ. Я не нашел никакой возможности изменить это поведение.

Конечно, YAML файл не имеет никаких pk для импортируемого объекта (du to natural key), я ожидал, что Django автоматически сгенерирует их.

Две проблемы в одной, первая, как указал Abdul Aziz Barkat необходимо реализовать класс Manager и метод get_by_natural_key для моего случая использования. Я не совсем правильно понял документацию по этому вопросу.

во-вторых, данные, экспортируемые командой dumpdata, не совсем те же самые, поэтому мне пришлось реимпортировать старую версию (с пк) заново (без пк), и она прекрасно работает.

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