Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

There's some way to set the `source` field param for nested fields?

Abierto
#1,439 3 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
35/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
python
Área
api, backend

Línea de trabajo

Comienza con graphene/types/field.py, en el código de resolución de source mencionado, y sigue cómo los campos de DjangoObjectType utilizan el valor de source. Compara el ejemplo actor__login con la alternativa actual basada en un resolver personalizado; se considera terminado cuando se admita el comportamiento previsto para relaciones anidadas o se documenten la limitación y el enfoque de resolver esperado.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Context

I'm currently trying to set my model user User subfield user.actor.id as field source of my DjangoObjectType.

This happens because there's other kind of users within the application like an Organization or even a Bot (all of them are actors).

Example

Lets define a custom Type:

class User(DjangoObjectType):
    class Meta:
        model = UserModel
        exclude = ['actor']
        filter_fields = ['actor__login']
        interfaces = [graphene.relay.Node]
        skip_registry = True

    # The login field is originated from `actor` relationship, not from the user model itself.
    # It doesn't work, actor__login is interpreted as user field [user.actor__login] not [user.actor.login].
    login = graphene.Field(graphene.String, source='actor__login')
    # ...

In the example above I define the login field source as source='actor__login' but I saw that here we're using getattr function to resolve the source so it's currently impossible to set the field without defining a custom resolver.

https://github.com/graphql-python/graphene/blob/dfece7f65d4bad51a87a8e9f03f9acef1e25d3f8/graphene/types/field.py#L16-L20

I would like to know if there's an alternative solution to select a subfield like the example or we're forced to create a custom resolver by using the resolver=lambda _, __: ... arg or the class method declaration.

Thanks for the hard work and the library!

Lenguaje dominante
Python
Estrellas
8.2k
Forks
818
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Aún no hemos revisado los archivos de configuración de este proyecto. Empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de graphql-python/graphene

Todos los issues de graphql-python/graphene

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.