Django模型关系[嵌套和层次结构]



对于这个新手问题,如果已经有人回答了,我提前道歉。我已经搜索了多个术语没有得到一个明确的答案。

我试图找出一个模型模式和它在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')`

最新更新