Исключить несколько полей из datadump в Django - PullRequest
0 голосов
/ 08 августа 2011

Есть ли способ исключить поля из разных таблиц при получении дампа БД. Я мог только найти, чтобы исключить модель полностью. (Я использую postgresql). любая помощь приветствуется .. Заранее спасибо ..

Ответы [ 2 ]

0 голосов
/ 06 июля 2016

Один из возможных приемов - определить новую модель с подмножеством полей и установить managed=False и переопределить db_table поля в Meta.

Также возможно избежать повторения определения общих полей с помощью общей абстрактной родительской модели.

class CommonBase(models.Model):
    class Meta:
        abstract = True

class ModelX(CommonBase):
    pass

class SubsmetOfModelX(CommonBase):
    class Meta:
        managed = False
        db_table = 'app_label_modelx'

Недостатками этого подхода могут быть:

  • Всегда нужно исключать хотя бы одну модель из двух выше во время dumpdata, в противном случае dumpdata будет включать дубликаты объектов.
  • loaddata для SubsetOfModelX завершится ошибкой, если в ModelX есть поля null=False, которые не входят в модель подмножества.
0 голосов
/ 08 августа 2011

не легко.Я бы взял копию файла dumpdata.py из исходного кода Django, поместил ее в ваш проект и настроил ее.Не будет слишком сложно расширить его, чтобы использовать собственный менеджер для создания дампа или расширить исключение для поддержки app.model.field.

Это звучит как обычно полезное расширение.

...