Графеновые узлы для наследования модели от абстрактного суперкласса
У меня есть схема 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
,
Вы должны найти, что они оба работают просто как DjangoObjectType
s, если вы явно выставляете логи в них.
Посмотрите здесь: /questions/49313791/est-li-sposob-zastavit-grafen-rabotat-s-polem-django-genericrelation/49313804#49313804