可以具有一种关系或另一种关系的Django模型类?

| 为了让您对这个问题有所了解,我将使用一个示例。问题在于类之间可能存在多种可能的关系,以及如何在模型文件中表示这种关系。在购物网站中,部门可以具有子部门或类别关系。从理论上讲,这意味着一个部门可以拥有100个子部门,直到拥有一个类别为止。 例如部门/类别/物料,部门/部门/类别/类别/物料,部门/类别/类别/物料...等 我的问题是如何最好地在Django models.py文件中描述这种关系?您只有两个外键,一个会是空的吗?     
已邀请:
我将在“类别”和“部门”模型上创建一个父属性,以便您可以表示层次结构。 您可以在Department模型上使用ForeignKey来允许他们指向其他Department,也可以在Category模型上使用GenericKey来使其指向Department或其他Category。例如:
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     

要回复问题请先登录注册