微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决可以具有一种关系或另一种关系的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     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。