У меня есть некоторые поля в модели, которые не всегда будут заполняться (например, фактическая дата завершения и затраты до завершения проекта).По этой причине я решил разделить модель на две части:
- Модель # 1 : плотная таблица, содержащая часто просматриваемые и всегда заполненные поля
- Модель # 2 : разреженная таблица, содержащая редко просматриваемые и не всегда заполненные поля
Вопросы
- Правильно ли я думаю, разделив это на две модели / таблицы?
- Должен ли я использовать Django Multi-table Inheritance, или я должен явно определить
OneToOneField
?Почему?
Конфигурация
Модели
Использование многостолового наследования Django
class Project(models.Model):
project_number = models.SlugField(max_length=5, blank=False,
primary_key=True)
budgeted_costs = models.DecimalField(max_digits=10, decimal_places=2)
class ProjectExtendedInformation(Project):
submitted_on = models.DateField(auto_now_add=True)
actual_completion_date = models.DateField(blank=True, null=True)
actual_project_costs = models.DecimalField(max_digits=10, decimal_places=2,
blank=True, null=True)
Использование явного OneToOneField
class Project(models.Model):
project_number = models.SlugField(max_length=5, blank=False,
primary_key=True)
budgeted_costs = models.DecimalField(max_digits=10, decimal_places=2)
class ProjectExtendedInformation(models.Model):
project = models.OneToOneField(CapExProject, primary_key=True)
submitted_on = models.DateField(auto_now_add=True)
actual_completion_date = models.DateField(blank=True, null=True)
actual_project_costs = models.DecimalField(max_digits=10, decimal_places=2,
blank=True, null=True)