model.save() не вызывается при загрузке светильников Django?
Я переопределяю свой метод save () модели Django, поэтому могу выполнить дополнительную проверку работоспособности объекта. (Является ли save () правильным местом для этого?)
Похоже, что у моих объектов fixtures/initial_fixtures.yaml не был вызван метод save (). Как я могу проверить работоспособность своих приборов?
3 ответа
Начиная с Django 1.5, save() НЕ вызывается:
При обработке файлов фикстуры данные сохраняются в базе данных как есть. Определенные моделью методы save () не вызываются, и любые сигналы pre_save или post_save будут вызываться с raw=True, поскольку экземпляр содержит только атрибуты, локальные для модели.
.save()
метод вызывается во время загрузки прибора, как показано в https://code.djangoproject.com/browser/django/tags/releases/1.3.1/django/core/management/commands/loaddata.py?rev=17029
Если вы используете другую версию DJ, вы можете проверить это, но я вполне уверен, что она также называется в более старых версиях.
Как вы проверяете, есть ли у ваших объектов свои save()
метод называется?
И об этом в .save()
Если проверки работоспособности нетривиальны, то я не думаю, что это очень хорошая идея.
Предполагается, что ваши данные - это хорошие данные, а не сомнительный ввод, поэтому я не уверен в хорошем случае, когда вам понадобится проверка их работоспособности.
Вы можете добавить данные в свою базу данных через администратора или что-то в вашем приложении, а затем экспортировать их в качестве фиксатора, если вам нужно выполнить однократную первоначальную проверку.