Django,当单个模型变大时模型拆分?

Posted

技术标签:

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

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

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

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

编辑,

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

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

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

【问题讨论】:

models.py getting huge, what is the best way to break it up?的可能重复 @AbijithMg:我找不到我的问题的答案,当你的一个模型(不是models.py)变大时,你如何处理它? 您可以将逻辑拆分为视图,这是解决方案之一。 【参考方案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 语句,而不是完全删除它们。

以上是关于Django,当单个模型变大时模型拆分?的主要内容,如果未能解决你的问题,请参考以下文章

当数据集变大时“未检测到 g++”,GPU 中的矩阵大小是不是有限制?

为啥 django 强制所有模型类都在 models.py 中?

拆分Django模型

如何在 django 中将一个表单字段拆分为模型的多个字段?

如何在 Django 中删除单个模型,并留下其他模型

单个模型的 Django 转储数据?