如果不导入相关模型本身,相关对象引用将不起作用
Related object reference does not work without importing the related model itself
我的应用程序中有 2 个模型 -
在 models/parent.py 我有 -
from django.db import models
class Parent(models.Model):
class Meta:
db_table = "parent_table"
start_date = models.DateField()
end_date = models.DateField()
在 models/child.py 我有 -
from django.db import models
from models.parent import Parent
class Child(models.Model):
class Meta:
db_table = "child_table"
some_ref = models.ForeignField(Parent)
现在在 models/parent.py 中,我将 属性 定义为 -
@property
def referred_values(self):
return self.child_set.all()
它给我错误 -
AttributeError: 'Parent' object has no attribute 'child_set'
但是如果我在我的应用程序的任何文件中导入 Child class,它就可以正常工作。
这是预期的行为还是我在这里遗漏了什么?
提前致谢。
直接设置related_name就好了
some_ref = models.ForeignField(Parent, related_name='childs')
并使用 child_set 的子代(更多英语)
您还可以使用:
some_ref = models.ForeignField(to='parent_app.Parent', related_name='childs')
并且您不需要将父模型导入子模型
另外:
class Parent(models.Model):
代替
class Parent:
但是在你的问题中,我想你忘记了将 Child 添加到 models/__init__.py
我的应用程序中有 2 个模型 -
在 models/parent.py 我有 -
from django.db import models
class Parent(models.Model):
class Meta:
db_table = "parent_table"
start_date = models.DateField()
end_date = models.DateField()
在 models/child.py 我有 -
from django.db import models
from models.parent import Parent
class Child(models.Model):
class Meta:
db_table = "child_table"
some_ref = models.ForeignField(Parent)
现在在 models/parent.py 中,我将 属性 定义为 -
@property
def referred_values(self):
return self.child_set.all()
它给我错误 -
AttributeError: 'Parent' object has no attribute 'child_set'
但是如果我在我的应用程序的任何文件中导入 Child class,它就可以正常工作。 这是预期的行为还是我在这里遗漏了什么?
提前致谢。
直接设置related_name就好了
some_ref = models.ForeignField(Parent, related_name='childs')
并使用 child_set 的子代(更多英语)
您还可以使用:
some_ref = models.ForeignField(to='parent_app.Parent', related_name='childs')
并且您不需要将父模型导入子模型
另外:
class Parent(models.Model):
代替
class Parent:
但是在你的问题中,我想你忘记了将 Child 添加到 models/__init__.py