gpt4 book ai didi

python - 在 ManyToManyField 中使用交叉引用时出现 Django NameError

转载 作者:行者123 更新时间:2023-12-01 05:26:53 24 4
gpt4 key购买 nike

我有一个名为 models 的包,其中有几个模型位于单独的 python 文件中。具体来说,目录结构如下:

models/
__init__.py
model1.py
model2.py

__init__.py中:

from model1 import Model1
from model2 import Model2

model1.py中:

from django.db import models
from model2 import Model2

class Model1(models.Model):
field2 = models.ManyToManyFiled(Model2)

model2.py中:

from django.db import models
from model1 import Model1

class Model2(models.Model):
field1 = models.ManyToManyFiled(Model1)

以下解决方案通过将 import 移动到每个文件的末尾可以消除 NameError,但我无法从其他地方导入模型

models/
__init__.py
model1.py
model2.py

__init__.py中:

#from model1 import Model1
#from model2 import Model2

model1.py中:

from django.db import models

class Model1(models.Model):
field2 = models.ManyToManyFiled(Model2)
from model2 import Model2

model2.py中:

from django.db import models

class Model2(models.Model):
field1 = models.ManyToManyFiled(Model1)
from model1 import Model1

我想使用如下代码从其他地方导入模型:

from models import Model1, Model2

有什么优雅的方法可以解决这个问题吗?

最佳答案

看看https://docs.djangoproject.com/en/dev/topics/db/examples/many_to_many/ 。ManyToManyField 必须仅出现在一个模型中,然后在另一个模型中创建一个隐式集,并且可以使用后缀 _set 访问该隐式集。您将拥有:

class Model1(models.Model):
field2 = models.ManyToManyField(Model2)

class Model2(models.Model):
pass

a = Model1()
b = Model2()
a.field2.add(b)

# Access the sets with:
a.field2.all()
b.model1_set.all()

关于python - 在 ManyToManyField 中使用交叉引用时出现 Django NameError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21190341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com