如何解析或修复Django循环模型字段依赖关系?

2024-05-02 07:30:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个与以下伪代码对应的数据库设计:

class AModel(models.Model):
    c_model_instances = models.OneToOne(CModel, ...)  # "is a" relationship

class BModel(models.Model):
    a_model_instances = models.ManyToMany(AModel, ...)  # "contains" relationship

class CModel(models.Model):
    b_model_instances = models.ManyToMany(BModel, ...)  # "contains" relationship

信不信由你。。。从业务的角度来看,这种设计完全有意义:)但是,当我尝试迁移数据库时,当然会出现错误NameError: name 'CModel' is not defined。如何解决或修复(通过不同的设计)该问题


Tags: instances代码数据库modelismodelsclasscontains
1条回答
网友
1楼 · 发布于 2024-05-02 07:30:31

您可以使用字符串文字,而不是指向模型的标识符,如the documentation中所述:

If you need to create a relationship on a model that has not yet been defined, you can use the name of the model, rather than the model object itself.

例如:

class AModel(models.Model):
    c_model_instances = models.OneToOne('django_app_name.CModel', …)  # "is a" relationship

class BModel(models.Model):
    a_model_instances = models.ManyToMany(AModel, …)  # "contains" relationship

class CModel(models.Model):
    b_model_instances = models.ManyToMany(BModel, …)  # "contains" relationship

Django将自动用对模型的引用替换字符串文本

相关问题 更多 >