Удалите pk поле из django сериализованных объектов

Относительно основной/ведомой части Вашего вопроса, от имущество (4) страница справочника (на который ссылаются от openpty (3) страница справочника в моей системе):

псевдотерминал А является парой устройств посимвольного ввода-вывода, ведущего устройства и ведомого устройства. Ведомое устройство предоставляет процессу интерфейс, идентичный описанному в tty (4). Однако, тогда как все другие устройства, которые обеспечивают интерфейс, описанный в tty (4), имеют какое-то устройство позади них, ведомое устройство имеет, вместо этого, другой процесс, управляющий им через основную половину псевдотерминала. таким образом, что-либо записанное на ведущем устройстве дано ведомому устройству, как введено, и что-либо записанное на ведомом устройстве представлено как вход на ведущем устройстве.

Страницы справочника являются Вашими друзьями.

19
задан skaffman 16 March 2012 в 09:56
поделиться

3 ответа

В конце концов я решил обойти это, «вручную» добившись того, что хотел, используя базовый simplejson сериализатор:

from django.utils import simplejson
json = simplejson.dumps( [{'name': o.name,
                           'country': o.country} for o in objects] )

Немного больше набора текста, но работает.

17
ответ дан 30 November 2019 в 03:34
поделиться

Мы не тратим время на «дезинфекцию» ПК. Когда мы создаем запись JSON, PK присутствует, и пользователь может игнорировать ее, если хочет. Они ничего не могут сделать с информацией, так что это просто беспорядок.

Ни один из наших интерфейсов веб-сервисов не позволяет кому-либо предоставить нам обратно PK. Мы выполняем поиск POST, PUT и DELETE по другим полям, но не по PK.

HTML, однако, показывает PK ' s URL все время. Это позволяет людям делать закладки на страницах.

0
ответ дан 30 November 2019 в 03:34
поделиться

Хотя это старый вопрос, кто-то другой, вероятно, придумает его в поисковике Google.

К сожалению, сериализатор джанго предлагает довольно мало настроек, как вы определили. Моим решением, если вы знаете, что будете использовать много сериализации для вашего проекта, было просто скопировать материал по сериализации django в мой собственный проект и внести некоторые небольшие изменения. Это не идеально, но это делает работу. В частности, чтобы удалить pk, в start_object(self, obj) есть строка:

self.xml.startElement("object", {
        "pk"    : smart_unicode(obj._get_pk_val()),
        "model" : smart_unicode(obj._meta),
    })

Удаление строки "pk" должно это исправить. Это несколько грязный хак, так как если они улучшат это позже, это может потребовать некоторых изменений во взглядах, но для меня это был самый простой способ обойти ограничения.

Надеюсь, это кому-нибудь поможет.

3
ответ дан 30 November 2019 в 03:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: