Skip to content

how to personalize resolve DjangoObjectType #583

@yoelvysmartinez

Description

@yoelvysmartinez
class Country(models.Model):
    oid = models.AutoField(primary_key=True)
    code = models.CharField(max_length=5, null=True)
    name = models.CharField(max_length=100, null=True)

    class Meta:
        db_table = ('countries')

    def __str__(self):
        return self.name


class City(models.Model):
    oid = models.AutoField(primary_key=True)
    code = models.CharField(max_length=5, null=True)
    name = models.CharField(max_length=100, null=True)
    country = models.ForeignKey(
        Country, db_column='countries_oid', blank=False, null=False, on_delete=models.CASCADE, related_name='cities')

    class Meta:
        db_table = ('cities')

    def __str__(self):
        return self.name

My schema

class CountryNode(DjangoObjectType):
    class Meta:
        model = Country
        filter_fields = {
            'code': ['icontains'],
            'name': ['iexact'],
        }
        interfaces = (relay.Node, )

    def resolve_cities(self, info):
        return None


class CityNode(DjangoObjectType):
    class Meta:
        model = City
        filter_fields = {
            'code': ['icontains'],
            'name': ['icontains'],
        }
        interfaces = (relay.Node, )

My question is how to personalize resolve_cities in CountryNode class.

Something like this

class CountryNode(DjangoObjectType):
    class Meta:
        model = Country
        filter_fields = {
            'code': ['icontains'],
            'name': ['iexact'],
        }
        interfaces = (relay.Node, )

    def resolve_cities(self, info):
        if not info.context.user.is_authenticated():
            return City.objects.none()
        else:
            return City.objects.all()

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions