从django中的datadump中排除多个字段

时间:2011-08-08 11:41:23

标签: python django django-models

有没有办法在进行数据库转储时从不同的表中排除字段。我只能完全排除模型。 (我正在使用postgresql)。任何帮助表示赞赏.. 提前谢谢..

2 个答案:

答案 0 :(得分:0)

不容易。我会从Django源获取dumpdata.py的副本并将其放入您的项目并进行自定义。将它扩展为使用自定义管理器进行转储或扩展排除以支持app.model.field都不会太难。

这听起来像是一个普遍有用的扩展。

答案 1 :(得分:0)

一个可能的技巧是定义一个包含字段子集的新模型,并在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字段不在子集模型上,则
  • null=False ModelX会失败。