ModelSrializer типа update_or_create, который бы не ругался на существующие объекты в модели, а просто их обновлял, или нужно метод is_valid менять?
is_valid точно не нужно менять
Может по этому полб сначала найти инстанс и его отправить в сериализатор?
А по каким параметрам происходит update?
да наверное по всем
а где это правильнее сделать?
Я правильно понимаю, что на какой-то апи прилетает запрос, не важно есть с подобными данными запись или нет. Запрос только на create?
мое приложение делает запрос к API и получает данные, при помощи сериализатора из них создает объекты, но если такой объект есть, то валидация в сериализаторе не проходит, вот хотелось бы сделать что бы повторяющиеся объекты обновлялись или перезаписывались.
Ну если прям в лоб решать задачу. То как-то так for obj_data in data_from_api: unique_filed = obj_data.get('unique_filed по которому искать в бд запись') obj = Модель.objects.filter(unique_filed=unique_filed).first() serializer = МодельSerializer(instance=obj, data=obj_data) serializer.is_valid....
неплохо, а не будет ли этот цикл слишком тормозить процесс?
Это зависит от количества записей. Если это поле уникальное на уровле бд, то по нему, вроде, должен быть индекс сделан. Ну и без запроса в бд не узнать есть объект или нет. Можно конечно сделать один запрос по всем прилетевшим данным, засунуть их, к примеру, в словать и потом по ключу доставать, но это уже оптимизация... не известно нужна ли.
Спасибо попробую
Обсуждают сегодня