Один из возможных приемов - определить новую модель с подмножеством полей и установить 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
, которые не входят в модель подмножества.