0

我创建了一个名为 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 是类本身。另外,我不确定这是否是原因。

无论如何,我能做些什么来解决这个错误?

4

2 回答 2

0

你不能那样做。引用 API 文档:

容器的模型必须声明为抽象的,因此不应被视为它自己的集合。

您只能将抽象模型用作容器。

于 2019-05-07T16:01:09.480 回答
0

我有同样的错误,如果引用的模型不在同一个应用程序中,你应该使用这种格式

    dependencies = models.ArrayModelField(
        model_container='app_name.Metric',
        blank=True,
    )

而不仅仅是

    dependencies = models.ArrayModelField(
        model_container='Metric',
        blank=True,
    )
于 2019-12-09T11:32:33.227 回答