Графеновые узлы для наследования модели от абстрактного суперкласса

У меня есть схема 2 классов:

class Anomaly(DjangoObjectType):
    class Meta:
        model = models.Anomaly


class Batch(LoggedModel):
    class Meta:
        model = models.Batch

где LoggedModel является

class LoggedModel(DjangoObjectType):
    class Meta:
        model = models.LoggedModel

первоначально оба унаследованы от DjangoObjectType но тогда ни один из двух не выставлял поле logs определено в суперклассе модели

class LoggedModel(models.Model):
    recursive_field = "parent_model"
    logs = models.ManyToManyField(Log, related_name="%(app_label)s_%(class)s")

    class Meta:
        abstract = True

class Anomaly(LoggedModel):
    ...

class Batch(LoggedModel):
    anomalies = models.ManyToManyField(Anomaly)

Теперь, после объявления в схеме Batch подкласса LoggedModel вместо DjangoObjectType, журналы открываются для обоих классов. Кто-нибудь может пролить свет?

1 ответ

Любые связанные поля, которые вы хотите иметь в своих моделях, должны быть явно объявлены, как вы это делали во втором примере. В первом примере журналы не отображаются автоматически, хотя, как я полагаю, они существуют в определении модели.

Во втором он выставлен в LoggedModel Таким образом, также для Anomaly а также Batch,

Вы должны найти, что они оба работают просто как DjangoObjectTypes, если вы явно выставляете логи в них.

Посмотрите здесь: /questions/49313791/est-li-sposob-zastavit-grafen-rabotat-s-polem-django-genericrelation/49313804#49313804

Другие вопросы по тегам