我们正在使用Django开发一个集合管理项目,用于不同类型的集合。
这个问题很自然地分为两部分:
示例
为了进一步说明这一点,让我们以伪代码中的一个简化示例为例。
公共部分
class ItemBase: # ideally abstract
name = CharField()
class Rental
item = ForeignKey("Item")
rented_to_person = CharField()专精于汽车的集合
class ItemSpecialization
horse_power = Int()再论问题
问题是我们如何组织代码,以便在不重复其内容的情况下重用公共部分?
我们可以想象,最好将公共部分作为non-installed应用程序,并将每个专用配置作为单独的安装应用程序。但是这会导致Rental具体类出现问题,因为它驻留在公共部分应用程序中。
对我们如何进行有什么建议吗?
发布于 2016-02-03 15:55:29
发布于 2016-02-03 16:05:16
听起来你在寻找一种OneToOneField字段关系。根据您的例子:
class ItemBase:
name = models.CharField(max_length=50)
class Rental:
item = models.OneToOneField(ItemBase)
rented_to_person = models.CharField(max_length=50)
class ItemSpecialization
item = models.OneToOneField(ItemBase)
horse_power = models.IntegerField()使用此模型层次结构,您可以获取租房或ItemSpecialzation对象,并获得对ItemBase字段的访问权。它基本上是Django模型的OO继承。文档中的更多细节:一个/
https://stackoverflow.com/questions/35181513
复制相似问题