Графен-Джанго с ManyToMany и сквозным столом - PullRequest
1 голос
/ 27 апреля 2019

мое приложение имеет несколько взаимосвязей "многие ко многим" со сквозной моделью , например, так:

class Person(models.Model):
    name = models.CharField()

class Group(models.Model):
    name = models.CharField()
    members = models.ManyToManyField(Person, through='Membership')

class Membership(models.Model):
    person = models.ForeignKey(Person)
    group = models.ForeignKey(Group)
    date_joined = models.DateField()  # Extra info on the relationship

Казалось бы, интуитивно представлять эти данные в graphql без промежуточного типадля членов (вариант А):

{
  "data": {
    "persons": [
      {
        "id": "1",
        "name": "Jack",
        "groups": [
          {
            "id": 3,                     # From Group-model
            "name": "Students",          # From Group-model
            "date_joined": "2019-01-01"  # From Membership-model
          },
          ...
        ]
      }
    ]
  }
}

против.Вариант Б:

{
  "data": {
    "persons": [
      {
        "id": "1",
        "name": "Jack",
        "memberships": [
          {
            "id": 9,
            "date_joined": "2019-01-01"
            "group": {
              "id": 3, 
              "name": "Students"
            }
          },
          ...
        ]
      }
    ]
  }
}

Я не смог найти примеров того, как реализовать вариант А с (django-) графеном.Как это можно сделать, и это поддерживается из коробки?

Каковы плюсы и минусы обоих подходов?Данные также должны быть видоизменены довольно часто, это меняет вердикт?

...