model.save() не вызывается при загрузке светильников Django?

Я переопределяю свой метод save () модели Django, поэтому могу выполнить дополнительную проверку работоспособности объекта. (Является ли save () правильным местом для этого?)

Похоже, что у моих объектов fixtures/initial_fixtures.yaml не был вызван метод save (). Как я могу проверить работоспособность своих приборов?

3 ответа

Начиная с Django 1.5, save() НЕ вызывается:

При обработке файлов фикстуры данные сохраняются в базе данных как есть. Определенные моделью методы save () не вызываются, и любые сигналы pre_save или post_save будут вызываться с raw=True, поскольку экземпляр содержит только атрибуты, локальные для модели.

https://docs.djangoproject.com/en/1.9/ref/django-admin/

.save() метод вызывается во время загрузки прибора, как показано в https://code.djangoproject.com/browser/django/tags/releases/1.3.1/django/core/management/commands/loaddata.py?rev=17029

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

Как вы проверяете, есть ли у ваших объектов свои save() метод называется?

И об этом в .save()Если проверки работоспособности нетривиальны, то я не думаю, что это очень хорошая идея.

Предполагается, что ваши данные - это хорошие данные, а не сомнительный ввод, поэтому я не уверен в хорошем случае, когда вам понадобится проверка их работоспособности.

Вы можете добавить данные в свою базу данных через администратора или что-то в вашем приложении, а затем экспортировать их в качестве фиксатора, если вам нужно выполнить однократную первоначальную проверку.

Другие вопросы по тегам