Хотя это старый вопрос, вероятно, кто-то другой придет с ним в поиске Google.
К сожалению, сериализатор django предлагает довольно мало настроек, как вы определили. Мое решение, если вы знаете, что вы будете использовать много сериализации для своего проекта, было просто скопировать материал сериализации django в мой собственный проект и внести некоторые небольшие изменения. Это не идеально, но это делает работу. В частности, чтобы удалить ПК, в start_object (self, obj) есть строка:
self.xml.startElement("object", {
"pk" : smart_unicode(obj._get_pk_val()),
"model" : smart_unicode(obj._meta),
})
Удаление строки "pk" должно исправить это. Это несколько грязный хак, потому что если они улучшат это позже, это может потребовать некоторых изменений в ваших взглядах, но для меня это был самый простой способ обойти ограничения.
Надеюсь, это кому-нибудь поможет.