model.save () не вызывается при загрузке светильников Django? - PullRequest
6 голосов
/ 24 октября 2011

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

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

Ответы [ 3 ]

8 голосов
/ 25 июля 2013

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

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

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

2 голосов
/ 24 октября 2011

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

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

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

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

1 голос
/ 24 октября 2011

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

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

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