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

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

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

这与我正在谈论的类似,但不起作用,因为 Component 类尚未定义(也可能出于其他原因)。

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

简要演示该概念的常规类(class):

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')

关于python - Django - 如何创建包含其自己类型的集合的模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51330863/

相关文章:

python - Flask-Login & Flask-Principle 认证用户掉落到 flask_login.AnonymousUserMixin

python - 如何将字典附加到 Pandas 数据框?

django - 错误 : Please install the PostgreSQL server development packages and re-run configure

python - 为什么在 django/python 中创建自己的用户类来管理用户信息是不好的做法?

python - Django - 注释按日期分组的不同值的 Count()

python - 将递归与循环相结合以找到最大值

python - 将给定文本更改为列表列表

python - 如何在 Jinja2 宏中引发异常?

Python 2.7 错误导入ROOT

python - pandas.Period() 对象的开始和结束时间是什么时候?参数 'freq'在Period对象中起什么作用?