有时在时间模型变得太大了。需要将其拆分为多个模型并将其与OneToOneField
连接。最常使用的字段,保存在主模型中,其他字段会移动到其他模型中。
然而,在创建新的模型实例时,这种方法会变得令人头疼。当您可以使用一行初始化一个模型时:
MyModel.objects.create(foo=1, bar=2)
您需要至少两行来初始化两个模型:
instance = MyModel.objects.create(foo=1, bar=2) MyRelatedModel.objects.create(mymodel=instance, hello=3, world=4)
有没有办法简单地在一行中创建两个模型,或者我应该为这些问题编写自己的辅助函数?
答案 0 :(得分:1)
我认为,由于以下原因,您不应该使用onetooneField拆分模型
请不要忘记django型号有两个功能。保持数据相关的方法,并保持您的应用程序的数据模型。一些商务模型具有包含数百个字段的表。这是完全正常的。如果你真的想分开它们。您可能想要查看抽象基类。这些是您的模型的基类,它没有自己的单独表格https://docs.djangoproject.com/en/dev/topics/db/models/#abstract-base-classes
但是如果你坚持使用oneToOne字段,你可以在一个模型的方法中包装对象创建代码,如
MyMode.create(attr_for_model_A=1, attr_for_model_B=2)
或者您可以覆盖默认管理器的create方法来创建两个方法而不是一个方法 https://docs.djangoproject.com/en/dev/topics/db/managers/#modifying-initial-manager-querysets
在我看来,非那些将值得拥有小型号代码。