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 中?