Django Graphene скрывает поле модели (или возвращает null) на основе предпочтений пользователя в ManyToMany
предположим, что у нас есть следующие модели Django Models:
class Person(models.Model):
name = models.CharField(max_length=255)
personal_field = models.CharField(max_length=255)
class Group(models.Model):
name = models.CharField(max_length=255)
participants = models.ManyToManyField(
"Person",
through="GroupPersonOption",
through_fields=('group', 'person')
)
class GroupPersonOption(models.Model):
person = models.ForeignKey("Person", on_delete=models.CASCADE)
group = models.ForeignKey("Group", on_delete=models.CASCADE)
hide_personal_field = models.BooleanField(default=False)
Пример: На основании группы, в которой состоит пользователь, он может выбрать скрытие своего поля personal_field, так что вместо обычного значения будет возвращаться None или Null. Человек может установить это в модели ManyToMany под названием GroupPersonOption
Здесь возникает сложность: . Как мне изменить его значение на None в моем DjangoObjectTypes? Когда я пытаюсь добавить функцию resolve для поля personal_field в PersonObjectType, я не знаю, хотел ли пользователь скрыть эту информацию.
Код графена:
{
peopleByGroup(name: "DjangoIsAwesome") {
person {
name
personal_field
}
}
}
Я прождал несколько дней в Django Subreddit, но единственное решение, которое предложил один человек, это просто игнорировать установку personal_field в None на основе некоторого значения и затем скрыть его во фронтенде, однако это неприемлемое решение, так как это раскрывает данные пользователя.
Я также пробовал добавить функцию resolve_person к PersonEventOptionType, но это многое сломало, поскольку я не смог найти пример разрешения внешних ключей в ManyToMany DjangoOjectType.
Любая помощь будет принята с благодарностью.
Спасибо за ваше время.