我目前正在为客户构建一个应用程序,其中每条记录都有大量与之相关的不同信息(大约 50-60 个字段)。
我想将模型分成几个部分,以便数据更有条理。
我的第一次尝试是做这样的事情:
class Program(models.Model):
class BookingInformation(models.Model):
program = models.OneToOneField('Program', related_name='booking_information')
producer = models.CharField(max_length=100, blank=True)
producer_phone = models.CharField(max_length=30, blank=True)
...
class Editorial(models.Model):
program = models.OneToOneField('Program')
series = models.CharField(max_length=100, blank=True)
...
我有 5 个左右的部分,其中一些是嵌套的。
这样我就可以有一个程序对象并做到program.booking_information.producer
那个领域。此外,我可以更轻松地ModelForm
为每个部分使用单独的表格(我想要的东西)。
当我创建对象时出现了困难。因为当我创建一个 Program 对象时, Program.BookingInformation 对象还不存在,如果不先保存 Program 就无法创建它(因此它会获得一个主键)。然后我读到这样的东西,它们似乎不鼓励在不是绝对必要时使用 OneToOneFields。
我应该把全部都放在一个模型中吗?拥有一张包含所有这些字段的大表对我来说似乎很乱,但是我对这个数据库的东西还很陌生。