创建可重用的Django应用程序?

Bru*_*Lee 12 python django reusability

我有点像一个Django初学者,并且一直试图尽可能地将我的应用程序解耦,并尽可能地将它构建为可重复使用的小块.试图遵循James Bennett构建可重用应用程序的策略.考虑到这一点,我遇到了这个问题.

假设我有一个应用程序存储有关电影的信息:

代码看起来像这样:

class Movie(models.Model):
    name = models.CharField(max_length=255)
    ...
Run Code Online (Sandbox Code Playgroud)

现在,如果我想添加评级,我可以使用django-rating,只需在我的模型中添加一个字段:

class Movie(models.Model):
    name = models.CharField(max_length=255)
    rating = RatingField(range=5)
    ...
Run Code Online (Sandbox Code Playgroud)

这本身意味着我的电影应用程序现在依赖于django评级,如果我想重新使用它,但不再需要评级,我仍然需要安装django-ratings或修改并分叉我的应用程序.

现在,我可以通过使用try/except with import来解决这个问题,如果成功则定义该字段,但现在我的电影应用程序明确地与数据库表定义中的评级相关联.

将两个模型分开并在评级模型中定义关系而不是电影似乎更明智.这样,依赖关系在我使用评级时定义,但在使用电影应用程序时不需要.

你是如何处理这个问题的?是否有更好的方法来分离模型?

我也想知道这样做是否会有任何重大的性能损失.

编辑:我想澄清一点,这更像是一个问题的例子,并且有点人为的说明一点.我希望能够在每次需要添加相关数据时添加其他信息而无需修改"电影"模型.我很感谢到目前为止的回复.

zee*_*kay 4

在这种情况下,就我个人而言,我会保持简单,只保留rating模型。您必须在可重用性与实施的简单性之间取得平衡。使东西可重用固然很棒,但是您的Movie模型真的足够有用以保证额外的工作吗?依赖有那么糟糕吗?我认为这些设计决策大部分都是主观的。今年 PyCon 上就这个主题进行了一次很好的演讲:http://blip.tv/file/4882961