对于这个新手问题,如果已经有人回答了,我提前道歉。我已经搜索了多个术语没有得到一个明确的答案。
我试图找出一个模型模式和它在Django项目中的关系。
这样做时出现的问题如下:
关于代码的第一部分:(Country>国家比;城市比;大学比;部门在主题):
-
是否有太多的层次结构?有什么更好或更有效的建模方法吗?
- 我也一直在研究嵌套关系(序列化器),但不知道是否有更好的方法来组织它。
-
这是一个很好的做法,有模型,如国家或城市只有一个字段在层次结构?
- 我的意思是,我需要它们,但不确定它们是否可以避免,因为它们与另一个模型关系解决方案简单。
a <;model>;访问它的第二个/第三个/第n个父节点?例:对象可以通过:
方便地进入其部门Subject.objects.filter (department__name = '数学')
但是可以从主语宾语访问University或State吗?如何?
**已被daniel James回复
关于代码的第二部分(Person和laptop):
- 我在模型中有几个角色(校长、院长、主任、老师)。其中一些字段具有多对多关系:
- 例如:一个老师可以在多个科目中,一个科目可以有多个老师。
我假设我可以使用内置的用户API和角色/组来处理这个问题。所以最后,校长或老师都是角色,但不知道如何以这种方式实施,也不知道这是否是个好主意。
- 关于笔记本电脑,我们假设大学有一些笔记本电脑(多到一个关系),这很简单。
- 但是这些笔记本电脑被分配给一个部门和一个科目。我需要大学、系、科的外卡吗?
如何正确计数它们或有一个注册表?学校有10台笔记本电脑,分配给2个系和5个学科。
如果问题太基础,我再次道歉。提前感谢!
模型模式:(伪代码)
class Country(models.Model):
name:
extension:
currency:
<<president>>:
class State (models.Model)
name:
**country: models.ForeignKey(Country)**
class City (models.Model)
name:
**state: models.ForeignKey(State)**
class University(models.Model)
name:
address:
<<dean>>:
**city: models.ForeignKey(City)**
laptop:
class Department(models.Model)
name:
<<director>>:
**university: models.ForeignKey(University)**
laptop:
class Subject(models.Model)
name:
description:
<<teacher>>:
**department: models.ForeignKey(Department)**
laptop:
class Person(models.Model):
name:
address:
age:
class Laptop(models.Model):
brand:
model:
serial:
date:
关于可以一个"模型";访问它的第二个/第三个/第n个父节点?一个学科可以通过以下途径轻松进入其所在系:是的,你可以在django
中遵循反向和正向关系`Subject.objects.filter(department__university__city__country = 'Your query')`
如果关系是一对多在父端,你可以使用_set
`Subject.objects.filter(department__university__city__country_set = 'Your query')`