Сделать поля в мутации updateAccount необязательными django graphql auth
Я использую пакет django graphql auth для обработки аутентификации в проекте Django/Graphql.
Я пытаюсь сделать UPDATE_MUTATION_FIELDS необязательными, чтобы их не нужно было вводить при использовании мутации updateAccount, но безуспешно.
Соответствующая часть в моем settings.py выглядит так:
GRAPHQL_AUTH = {
'LOGIN_ALLOWED_FIELDS': ['email', 'username'],
'ALLOW_LOGIN_NOT_VERIFIED': False,
'REGISTER_MUTATION_FIELDS': {
'email': 'String',
'username': 'String',
'display_name': 'String',
'country': 'String',
'birth_date': 'Date',
},
'REGISTER_MUTATION_FIELDS_OPTIONAL': {
'bio': 'String',
'gender': 'String',
'is_mod': 'Boolean'
},
'UPDATE_MUTATION_FIELDS': {
'display_name': 'String',
'country': 'String',
'birth_date': 'Date',
'gender': 'String',
'bio': 'String',
'is_mod': 'Boolean'
}
Актуально models.py:
class User(AbstractBaseUser):
is_mod = models.BooleanField(default=False)
display_name = models.CharField(_('Full name'), max_length=50)
country = CountryField(blank_label=_('(select country)'))
birth_date = models.DateField()
bio = models.CharField(max_length=150, blank=True)
Поэтому я решил использовать пользовательскую форму, чтобы явно установить эти поля как необязательные:
from graphql_auth.forms import UpdateAccountForm
class UpdateUserForm(UpdateAccountForm):
# Mark fields as not required
class Meta(UpdateAccountForm.Meta):
pass
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for field in (fields := self.fields):
fields[field].required = False
А моя пользовательская мутация выглядит так:
class UpdateAccount(relay.UpdateAccount):
form = UpdateUserForm
class AuthRelayMutation(graphene.ObjectType):
# update_account = relay.UpdateAccount.Field()
update_account = UpdateAccount.Field()
И наконец, я использую мутацию выше как:
# All Mutation objects will be placed here
class Mutation(AuthRelayMutation, graphene.ObjectType):
debug = graphene.Field(DjangoDebug, name='__debug')
schema = graphene.Schema(query=Query, mutation=Mutation)
Когда я обращаюсь к URL graphql, я получаю ошибку Cannot create a consistent method resolution order (MRO) for bases InputObjectType, UpdateAccountInput
Что я могу сделать, чтобы поля, которые я хочу обновить, были необязательными?