【问题标题】:Django, model split when a single model is getting huge?Django,当单个模型变大时模型拆分?
【发布时间】:2017-10-14 23:04:42
【问题描述】:

我已经将 models.py 分解为单独的模型文件。

其中一个模型文件越来越大,我想将其拆分,但不知道如何。

我能想到的一种方法是将方法分成几个类(作为 mixin)并继承它们。但不确定这是否是最好的方法。

  • 编辑,

这与可能的重复问题不同。

当单个模型(如 Book)变大时,如何拆分?

可能的重复不问也不回答。

【问题讨论】:

标签: python django django-models


【解决方案1】:

Mixins 听起来可以很好地解决您的问题。您可以在模型目录中放置另一个名为 mixins.py 的文件,然后执行以下操作:

models/mixins.py

class BookMixin(object):
    def is_in_print(self):
        ...
    def calculate_cost(self, number_ordered):
        return self.price * number_ordered

models/book.py

from .mixins import BookMixin

class Book(BookMixin, models.Model):
    price = models.DecimalField()
    title = ...

那么在您看来,您可以执行以下操作:

purchased_book = Book.objects.get(...)
subtotal = purchased_book.calculate_cost(3)

【讨论】:

  • 要知道的一点是,如果您这样做,如果您稍后尝试从模型类定义中删除任何 mixin,您的迁移就会搞砸。不是主要问题,因为您可以将它们清空为单个 pass 语句,而不是完全删除它们。
猜你喜欢
  • 1970-01-01
  • 2013-09-06
  • 2019-10-30
  • 1970-01-01
  • 1970-01-01
  • 2013-04-25
  • 1970-01-01
  • 2011-12-07
  • 1970-01-01
相关资源
最近更新 更多