Python 当childs能够';你不能继承吗?
我在Django有一个相当简单的模型,比如说Python 当childs能够';你不能继承吗?,python,django,design-patterns,database-design,model,Python,Django,Design Patterns,Database Design,Model,我在Django有一个相当简单的模型,比如说Book: class Book(models.Model): name = models.CharField(max_length=255, default="") description = models.TextField(null=True, blank=True) creation_date = models.DateTimeField() 因为结构和数据基本上来自一个外部API,我已经将其包含在自己的应用程序中,我
Book
:
class Book(models.Model):
name = models.CharField(max_length=255, default="")
description = models.TextField(null=True, blank=True)
creation_date = models.DateTimeField()
因为结构和数据基本上来自一个外部API,我已经将其包含在自己的应用程序中,我不想修改它
现在我想在项目中添加另一个不同书籍的来源,但我不确定这里的最佳解决方案是什么
假设第二个模型是:
class NextBook(models.Model):
title = models.CharField(max_length=255, default="")
long_description = models.TextField(null=True, blank=True)
created = models.DateTimeField()
因此基本字段存在,但名称不同。为了将两者结合起来,我可能可以使用另一个带有GenericForeignKey的模型:
class BaseBook(models.Model):
book_type = models.ForeignKey(ContentType)
book_id = models.PositiveIntegerField()
book_object = generic.GenericForeignKey('book_type', 'book_id')
但是我不能查询所有的书,例如,BaseBook.objects.all()。order\u by('created')
不起作用。当然,我可以继续在基本模型中复制datetime字段,然后复制标题等等,但我认为这是错误的方向。而且,如果我不想接触特定的模型,继承似乎不是一个选择
我正在寻找一些设计模式,或者让我高效地“插入”更多的提供者并查询所有对象,同时又不会造成模型结构和数据库查询的混乱。你的问题中有一个基本矛盾。您是否认为,对于给定的书籍,由不同提供商创建的
报告的是相同的
如果是,为什么您不能在基本手册
上创建一个创建的
字段并按该字段排序?然后,您可以从书籍
中删除创建日期
(如果您不想触摸它,也可以忽略它)
如果没有,您首先希望如何通过创建的订购书籍(而不是供应商条目)
另外,对于MongoDB这样的免费模式数据库来说,您试图做的事情听起来是一个很好的例子。在那里,您可以将提供者条目直接嵌入到图书文档中,然后按照类似“从图书的第一个提供者条目创建的”的方式进行排序。因此,您可以在不进行非规范化的情况下维护自包含的提供程序文档。但是,您仍然需要创建来对所有提供者表示相同的含义。您的问题中存在一个基本矛盾。您是否认为,对于给定的书籍,由不同提供商创建的报告的是相同的
如果是,为什么您不能在基本手册
上创建一个创建的
字段并按该字段排序?然后,您可以从书籍
中删除创建日期
(如果您不想触摸它,也可以忽略它)
如果没有,您首先希望如何通过创建的订购书籍(而不是供应商条目)
另外,对于MongoDB这样的免费模式数据库来说,您试图做的事情听起来是一个很好的例子。在那里,您可以将提供者条目直接嵌入到图书文档中,然后按照类似“从图书的第一个提供者条目创建的”的方式进行排序。因此,您可以在不进行非规范化的情况下维护自包含的提供程序文档。尽管如此,您仍然需要创建的
对所有提供者来说都意味着相同的内容。给定的书籍永远不会在两个对象中表示。我不想把一本书和下一本书联系起来,它们彼此没有联系。对于提供者,我只是指图书信息的来源。@webjunkie:哦,我在找什么?。。我以为你在那里有一对多的关系。我的错!一本给定的书永远不会用两个对象来表示。我不想把一本书和下一本书联系起来,它们彼此没有联系。对于提供者,我只是指图书信息的来源。@webjunkie:哦,我在找什么?。。我以为你在那里有一对多的关系。我的错!