用于从抽象超类继承模型的石墨烯节点

时间:2019-05-16 18:57:03

标签: graphene-django

我有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 个答案:

答案 0 :(得分:1)

您想要在模型中包含的所有相关字段都需要明确声明,就像在第二个示例中所做的那样。在第一个示例中,即使我认为在模型定义中存在日志,也不会自动暴露日志。

在第二个中,它在LoggedModel中公开,在AnomalyBatch中也显示。

如果您明确公开了它们中的日志,则应该发现它们都像DjangoObjectType一样工作。

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