我们正在使用Django开发一个集合管理项目,可用于不同类型的集合。在
这个问题很自然地分成两部分:
为了进一步说明这一点,让我们在伪代码中举一个简化的例子。在
class ItemBase: # ideally abstract
name = CharField()
class Rental
item = ForeignKey("Item")
rented_to_person = CharField()
问题是我们如何组织代码以允许重用公共部分而不复制其内容?在
我们认为最好将公共部分作为一个未安装的应用程序,并将每个专门的配置作为一个单独的安装的应用程序。但是这会导致Rental
具体类的问题,因为它驻留在公共部分应用程序中。在
有什么建议吗?在
这实际上取决于您想要什么,您可以使用abstract model class作为常见的内容,并从专用模型类中继承。
否则,如果您真的想要一个表来处理所有公共数据,通常能够与之关联,那么您需要您的专用模型与公共模型有关系。它可以是foreign key,也可以使用model inheritance,在这种情况下,有关外键将由django为您管理,但使用起来会比较困难。
听起来你在寻找
OneToOneField
字段关系。根据您的例子:使用这个模型层次结构,您可以获取租赁或itemspecialization对象,还可以访问ItemBase字段。这基本上是Django模型的OO继承。更多详细信息请参阅文档:https://docs.djangoproject.com/en/1.9/topics/db/examples/one_to_one/
相关问题 更多 >
编程相关推荐