AssertionError: Найдены разные типы с одинаковыми именами в схеме - PullRequest
2 голосов
/ 29 апреля 2019

У меня есть два класса: Products и SalableProducts в моих моделях (SalableProducts наследуется от Products, поэтому имеет все поля своей базы данных). Вот моя схема внизу

Я пытался включить свойство "exclude_fields", но это не сработало

Product_schema.py:

class Product(SQLAlchemyObjectType):
 class Meta:
  model = ProductModel
  interfaces = (relay.Node, )

class ProductConnections(relay.Connection):
 class Meta:
  node = Product

Salable_product_schema.py:

class SalableProduct(SQLAlchemyObjectType):
 class Meta:
  model = SalableProductModel
  interfaces = (relay.Node, )

class SalableProductConnections(relay.Connection):
 class Meta:
  node = SalableProduct

Schema.py:

class Query(graphene.ObjectType):
 node = relay.Node.Field()
 all_products = SQLAlchemyConnectionField(ProductConnections)
 all_salable_products = 
  SQLAlchemyConnectionField(SalableProductConnections)

Результатом является эта ошибка:

AssertionError: Найдены разные типы с одинаковыми именами в схеме: product_status, product_status.

(product_status - свойство, разделяемое двумя классами по наследству)

1 Ответ

0 голосов
/ 30 июня 2019

У меня была такая же проблема. В моем конкретном случае проблема заключается в конфликте внутренней работы SQLAlchemy, когда используется обратная ссылка. Я бы проверил модель, чтобы увидеть, если это так.

Следующая статья содержит некоторую соответствующую информацию. В моем конкретном случае я попробовал то, что было предложено, и переименовал одно из соединений:

techniques = SQLAlchemyConnectionField(TechniqueConnection)
belts = SQLAlchemyConnectionField(BeltConnection)
belt_techniques = SQLAlchemyConnectionField(BeltTechniqueConnections)

Я добавил 's' к соединению BeltTechnique. Родственная модель имеет много-много взаимосвязи с техникой и поясами.

...