我的模型文件应该放在不同的包里还是同一个模型文件中?

2 投票
1 回答
1535 浏览
提问于 2025-04-18 13:29

注意:我读过 在Stack Overflow和程序员之间选择 这篇文章,得出的结论是因为这篇帖子包含代码,所以我认为它更适合放在Stack Overflow上,而不是程序员专区。

你好,我正在用Django构建一个应用程序,而且我对Django非常陌生。我已经阅读了Django教程和Django-Rest-Framework教程。

我的问题是,我应该如何构建我应用程序的这一部分。目前,我正在尝试为我正在编写的安卓应用程序构建一个RESTful API。

我读过这些内容:
为什么Django要求所有模型类都在models.py中?
还有
models.py变得庞大,最好的拆分方法是什么?

为了让你更好地理解我的项目:

这是我的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访问。

在介绍完我的项目后,我的问题是……公司、部门和员工是否应该放在不同的包里,因为它们是独立的实体?还是应该都放在一个模型文件里?最终,它们应该有自己的REST类,正如这里所描述的:http://www.django-rest-framework.org/tutorial/3-class-based-views#rewriting-our-api-using-class-based-views

1 个回答

1

Django对这两种方法都没问题。在Python中,不像其他语言,你可以在同一个文件里写多个类定义。通常情况下,如果一个Django应用的模型不太长,比如说2到3个屏幕的内容,所有模型会放在同一个文件里。

如果内容更长,通常会把它们放在一个叫models的模块里,并分成不同的文件。每个模型都需要在__init__.py文件中提到,就像你在第一个链接中看到的那样。在Django 1.7中,最后提到的app_label的“技巧”就不再需要了。

撰写回答