Скажем, у меня есть модели Django, выглядящие следующим образом:
class User(Model):
username = CharField(...)
@property
def projects(self):
return # projects the user is assigned to
class Project(Model):
name = CharField(...)
@property
def users(self):
return # users assigned to the project
class Assignment(Model):
user = ForeignKey(User)
project = ForeignKey(Project)
(я намеренно не писал наборы запросов для свойств, чтобы сделать код более читабельным.)
Я хотел быбыть в состоянии увидеть эти свойства в запросах графена-Джанго.Мои ModelType
классы выглядят так:
class UserType(DjangoObjectType):
class Meta:
model = User
projects = List(ProjectType)
class ProjectType(DjangoObjectType):
class Meta:
model = Project
users = List(UserType)
Однако этот код не работает, поскольку ProjectType
в классе UserType
не определен, и замена этих классов не очень поможет.
Я пытался вообще не включать свойства, и после создания всех классов ModelType
я пытался добавить свойства через setattr()
.Такой хак наверняка устанавливает атрибуты, поэтому классы имеют точно такую же структуру, но кажется, что уже слишком поздно: свойства вообще не доступны из GraphQL.
Теперь у меня закончились идеи.Есть ли способ добиться желаемого поведения?