我的模型文件应该保留在不同的包中还是 Django 中的相同模型文件中?
Posted
技术标签:
【中文标题】我的模型文件应该保留在不同的包中还是 Django 中的相同模型文件中?【英文标题】:Should my model files remain in different packages or the same model file in Django? 【发布时间】:2014-09-06 08:48:10 【问题描述】:注意:我阅读了Choosing between Stack Overflow and Software Engineering,并且从我的结论来看,因为这篇文章包含代码,我认为它属于 *** 而不是程序员。
嗨,我正在用 Django 构建一个应用程序,而且我对 Django 很陌生。我已经阅读了 Django 教程和 Django-Rest-Framework 教程。
我的问题是我应该如何构建我的应用程序的这一部分。现在我正在尝试为我正在编写的 android 应用程序构建一个 RESTful api。
我读过这个:Why does django enforce all model classes to be in models.py? 和models.py getting huge, what is the best way to break it up?
透视我的项目:
这是我的 models.py 的样子:(注意这些不是我的实际模型,它们只是我为保持代码更简洁所做的一个示例)
class Company(models.Model):
name = models.charField(max_length=100)
class Department(models.Model):
company = models.ForeignKey(Company)
employees_count = models.IntegerField(default=1)
name = models.charField(max_length=100)
class Employee(models.Model):
department = models.ForeignKey(Department)
name = models.charField(max_length=100)
age = models.IntegerField(default=0)
每个类都有自己的函数,可以通过 API 访问。
在介绍我的项目后,我的问题是.. Company、Department 和 Employee 是否都属于不同的包,因为它们是独立的实体?或者它们都应该属于一个模型文件吗?最后,他们应该有自己的 REST 类,如下所述:http://www.django-rest-framework.org/tutorial/3-class-based-views#rewriting-our-api-using-class-based-views
【问题讨论】:
【参考方案1】:Django 对这两种方法都很好。在 Python 中,与其他语言不同,您可以将多个类定义放在同一个文件中。通常,如果 Django 应用程序不会太长,例如 2-3 个屏幕,它会将其所有模型放在同一个文件中。
任何更长的文件,它们通常放在models
模块中并拆分为不同的文件。如您的第一个链接中所述,每个模型都需要在 __init__.py
中提及。在 Django 1.7 中,最后提到的 app_label
"trick" 不再需要了。
【讨论】:
那么在每个包的视图文件中为每个类创建一个模块并在视图文件中创建一个rest控制器会更好吗?将所有内容都塞进一个文件中,感觉是错误的和杂乱无章的。 严格来说,即使将它们分成不同的模块后,它们也将位于同一个 model 包下。在 Django 中,最好将不相关的模型重构为可重用的 apps。以上是关于我的模型文件应该保留在不同的包中还是 Django 中的相同模型文件中?的主要内容,如果未能解决你的问题,请参考以下文章
Java eclipse中创建项目以后缺省包和命名的包有啥区别?