【发布时间】:2014-10-11 21:56:42
【问题描述】:
我正在研究一个 Django 项目的模型:一个跟踪 Books 的应用程序。
在其他字段中,每本书都有一个/两个Printer 和一个Publisher,它们基本上是相同的。所以,它是这样的:
class Book(models.Model):
title = models.CharField(max_length=100)
printer = models.ForeignKey('Printer')
publisher = models.ForeignKey('Publisher')
class Printer(models.Model):
name = models.CharField(max_length=100)
location = models.CharField(max_length=100)
class Publisher(models.Model):
name = models.CharField(max_length=100)
location = models.CharField(max_length=100)
在我看来,这是一种糟糕的数据库形式:它不是 DRY。此外,Book 可能经常由出版同一本书或另一本书的公司印刷:换句话说,表格可以重叠。因此,Printer 和 Publisher 这两个模型应该真正结合起来,同时它们需要在管理中保持不同。
我的问题:如何最好地做到这一点?我应该创建另一个模型Firm,并在它和Printer/Publisher 之间建立一对一的关系吗?
【问题讨论】:
标签: python database django database-design django-models