Как заблокировать транзакцию в Django? - PullRequest
0 голосов
/ 29 августа 2018

В некоторых случаях запрос отправляется на сервер несколько раз с одними и теми же данными. Я хочу вставить эти данные в базу данных, используя ORM Django. В этих данных есть поле скажем 'field_imp', которое может быть только уникальным. Прямо сейчас это дает мне integrity error, поскольку оба запроса пытаются вставить вместе. Как мне избежать этого состояния?

Как отправить несколько запросов вместе?

Используя terminator, откройте несколько вкладок, напишите тот же curl запрос и отправьте.

Модель в Джанго:

class MyModel(models.Model)
    field_imp = models.TextField(unique=True)

Я использую Django rest Framework для генерации API и serializers для проверки данных.

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Я использовал get_or_create() целое число serializer.save().

0 голосов
/ 29 августа 2018

Первый метод заключается в блокировке таблицы, но это низкая эффективность;

Второй метод заключается в добавлении двух кодовых точек:

  1. добавить существующую проверку в сериализатор.
  2. добавить try ... catch ... для ошибки целостности.
...