python - Django-如何创建一个包含其自身类型集合的模型?

我正在创建的模型中的一个字段是其自身类型的实例列表。如何在django中做到这一点?我找不到有关如何执行此操作的任何文档。

这就像我在说的一样,但由于尚未定义Component类(并且可能还有其他原因),因此无法正常工作。

class Component(models.Model):
    name = models.CharField()
    description = models.CharField()
    status_ok = models.BooleanField()
    subcomponents = models.ForeignKey(Component)


常规班简要演示了该概念:

class Component:
    def __init__(self, name, description, status_ok, *subcomponents):
        self.name = name
        self.description = description
        self.status_ok = status_ok
        self.subcomponents = []
        for subcomponent in subcomponents:
            if isinstance(subcomponent, Component):
                self.subcomponents.append(subcomponent)
            else:
                raise TypeError(subcomponent)

最佳答案

要引用相同的模型,请使用普通的Python语法self,但要使用字符串,

Class Component(models.Model):
    name = models.CharField()
    description = models.CharField()
    status_ok = models.BooleanField()
    subcomponents = models.ForeignKey('self')

本文翻译自 https://stackoverflow.com/questions/51330863/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 python django python-3.x django-models containment


相关文章:

python - 如何组织Python源代码文件? [关闭]

java - Python中的PLSA实现

python - 后续:缺少必需的django中的Charfield Modelform保存为空字符串,不会引发错误

python - Django为什么要为auth.User.username设置一个较短的外键最大长度?

python - 在矩阵元素邻居中求和

python - 嵌套的迭代映射/过滤

python - 芹菜升级(3.1-> 4.1) - 通过对等方重置连接

python - 如何在models.ForeignKey字段上添加绿色加号按钮?

python - Python3绑定方法

sql - 使用分组在Django中进行有条件的批量更新