Сегодня произошло нечто странное. В основном у меня есть код для импорта данных json в модель, примерно так:
for i in data:
Signature.objects.get_or_create(**i)
json пример:
[
{'id': 1, 'plan': 1, 'customer': 1},
{'id': 2, 'plan': 3, 'customer': 50},
...
{'id': 31, 'plan': 12, 'customer': 22},
...
{'id': 222, 'plan': 12, 'customer': 22},
]
Да, мой клиент не следовал последовательность :( Итак, я импортирую и сохраняю тот же pk.
Этот код работает должным образом, и данные теперь синхронизируются с платежным сервисом (все объекты импортированы).
Теперь странное поведение :
Я использую Django Rest Framework, и после POST (проверьте validated_data) в моем API в этой строке возникает следующая ошибка:
Signature.object.create(**self.validated_data)
повторяющееся значение ключа нарушает уникальное ограничение "plan_signature_pkey" ДЕТАЛИ: Ключ (id) = (1) уже существует.
проверенные данные:
{
"plan": "3", # This is a foreign key to plan 3
"payer_only": False,
"schedule": "09:00",
"payment: "CREDIT_CARD"
}
Нет 'pk': 1 или ' id ': 1 в проверенных данных
Django пытается создать объект с существующим ключом?
Код отладки, я 31 раз вызвал строку Subscription.create (), затем:
повторяющееся значение ключа нарушает уникальное ограничение "plan_signature_pkey" ДЕТАЛИ: Ключ (id) = (1) уже существует.
....
повторяющееся значение ключа нарушает уникальное ограничение "plan_signature_pkey" ДЕТАЛИ: Ключ (id) = (31) уже существует.
По вызову 32 это работает. Итак, я что-то упускаю? Мне это кажется странным.