0

我有 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 之后,两个类的日志都公开了。任何人都可以解释一下吗?

4

1 回答 1

1

您希望在模型中包含的任何相关字段都需要显式声明,就像您在第二个示例中所做的那样。在第一个示例中,即使它存在于模型定义中,日志也不会自动公开。

在第二个中,它暴露在 中LoggedModel,因此也为AnomalyBatch

您应该会发现,DjangoObjectType如果您在其中显式公开日志,它们都可以像 s 一样工作。

看看这里:https ://stackoverflow.com/a/56173485/214150

于 2019-05-17T02:56:18.800 回答