Как исправить ошибку «isinstance () arg 2 должно быть типом или кортежем типов» в Django - PullRequest
0 голосов
/ 07 мая 2019

Я создал модель Django (v. 2.1.5) с именем Metric, которая сама выступает в качестве модели для встраивания, как вы можете видеть ниже:

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 - это сам класс. Кроме того, я не уверен, является ли это причиной.

В любом случае, что я могу сделать, чтобы исправить эту ошибку?

1 Ответ

0 голосов
/ 07 мая 2019

Вы не можете этого сделать.Цитирование документации API:

Модель контейнера должна быть объявлена ​​как абстрактная, поэтому ее не следует рассматривать как собственную коллекцию.

Можно использовать толькоабстрактные модели как контейнеры.

...