Поделюсь решением проблемы возникающей при попытке сделать дамп данных проекта:
Выполняя команду:
(env)➜ myproject git:(master) ✗ python project/manage.py dumpdata --natural-foreign --exclude auth.permission --exclude contenttypes --exclude admin.logentry --indent 4 > dump.json
Получил ответ:
CommandError: Unable to serialize database: MyModel matching query does not exist.
Где MyModel — имя модели, в моём случае это была AccountUser.
Ошибка сравнительно не информативная, гугление ничего особого не дало. Пришлось залезть в код фреймворка Django, в частности в ту часть где происходит дамп данных:
cd ../env/lib/python2.7/site-packages/django/core/management/commands
vi dumpdata.py
Видим что исключение выбрасывается на 208 строке:
raise CommandError("Unable to serialize database: %s" % e)
Пришлось закомментировать блок чтобы вываливало ошибку а не обрабатывало исключение. В итоге получаю по бэктрейсу (backtrace) ошибки вижу что проблема в django/db/models/query.py в исключении DoesNotExist с описанием : «matching query does not exist»
Вывожу разные переменные (print не работает), через это описание ошибки. Видно что всё по нулям. В итоге вывел self.query.
Он мне вывел запрос — который — я его выполнил в sql — выдал что да, этот запрос выдает результат нуль записей, из-за чего ошибка, собственно, и генерируется.
А дело всё в том, что у меня есть связанная таблица через ForeignKey (другая, скажем AccountCompany), и так получилось что там есть записи, которые ссылаются на AccountUser, но в AccountUser таких записей уже нет.
В общем, почистил вторую таблицу, «брошенных» записей нет, и вуаля! Дамп происходит как и должен. Не забудьте только убирать ваши изменения в библиотеках.