Различие между обновлением и новой записью в Django - PullRequest
2 голосов
/ 08 июля 2011

Я использую метод save() для переопределения метода models.Model, чтобы манипулировать битами свойств перед сохранением их в БД (например, с помощью вызова API Google MAPS для получения геолокации адреса).

Однако мне не хотелось бы звонить в Google каждый раз, когда я обновляю запись через панель администратора, а только когда я вставляю новую запись.

Есть ли простой способ сделать это?это (вместо выполнения запроса к БД внутри метода save() и проверки, существует ли объект уже)?

Меир

Ответы [ 2 ]

1 голос
/ 08 июля 2011

проверка первичного ключа этого объекта при сохранении ()

def save(self, *args, **kwargs):
    if self.pk:
        # this is executed when updating (pk exists)
    else:
        # this is executed when inserting
    super(Model, self).save(*args, **kwargs)

что-то в этом роде

источник

прочитайте ссылку полностью, там есть ошибка

РЕДАКТИРОВАТЬ: уловки, прочитайте комментарии, чтобы узнать больше об ошибках

1 голос
/ 08 июля 2011

https://docs.djangoproject.com/en/dev/ref/models/querysets/#get-or-create

в основном, с этим вы можете проверить, существует ли ваш объект и запустить ваше обновление, или создать новое, если объект не находится в вашей базе данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...