【发布时间】:2019-05-07 15:52:40
【问题描述】:
我创建了一个名为 Metric 的 Django (v. 2.1.5) 模型,它本身就是一个嵌入模型,如下所示:
from djongo import models
class Metric(models.Model):
_id = models.ObjectIdField()
...
dependencies = models.ArrayModelField(
model_container='Metric',
blank=True,
)
def __str__(self):
return self.name
class Meta:
db_table = 'metric'
但是,当我尝试执行代码时:
for metric in Metric.objects.all():
我收到以下错误:
File "/.../python3.6/site-packages/djongo/models/fields.py", line 235, in to_python
if isinstance(mdl_dict, self.model_container):
TypeError: isinstance() arg 2 must be a type or tuple of types
我想这个错误是由于在 model_container 赋值上使用了单引号引起的,但我不能删除它,因为 model_container 是类本身。另外,我不确定是不是这个原因。
无论如何,我能做些什么来修复这个错误?
【问题讨论】:
-
请显示整个
models.py -
ArrayModelField来自哪里?这是什么? -
@dirkgroten,可能是这个:nesdis.github.io/djongo/array-model-field
-
我看不到任何对 Djongo 的引用,允许您将字符串用于 model_container 参数。通常在标准 Django 中,您可以将字符串名称或“self”用于诸如 ForeignKey 之类的内容,但 Djongo 似乎需要此处的实际类型 - 当然,在自引用字段的情况下尚未定义。所以,这可能是不可能的。
-
我认为不可能将模型嵌入到自身内部。
标签: python django django-models djongo