Django模型类,可以有一个关系也可以有另一个关系



为了让你们了解我要解决的问题,我将使用一个例子。问题在于类之间可能存在多种可能的关系,以及如何在模型文件中表示这种关系。在购物网站中,部门既可以有子部门关系,也可以有类别关系。这在理论上意味着一个部门可以有100个子部门,直到它有一个类别。

。部门/类别/项目、部门/部门/类别/项目、部门/类别/类别/项目等

我的问题是如何在Django models.py文件中最好地描述这种关系?你会不会只有两个外键,其中一个是空的?

我将在您的Category和Department模型上创建一个父属性,以便您可以表示层次结构。

您可以在Department模型上使用ForeignKey来允许它们指向其他Department,您可以在Category模型上使用GenericKey来允许它指向Departments或其他Categories。例如:

class Department(models.Model):
    ...
    parent = models.ForeignKey('self', ...)
class Category(models.Model):
    ...
    parent_content_type = models.ForeignKey(ContentType)
    parent_id           = models.PositiveIntegerField()
    parent              = generic.GenericForeignKey('parent_content_type', 'parent_id')

这将允许您在任意的部门树下表示任意的类别树。

你可以使用django树实现django-mptt或django-treebeard

相关内容

最新更新