django-graphene如何从模型.py中获得字段列表



我将graphql与django一起使用。我的模型.py可能看起来像:

from django.db import models
class MyModel(models.Model):
field_a = models.CharField(max_length=100)        
field_b = models.CharField(max_length=100)    
field_c = models.CharField(max_length=100)

如何获得不同类(即schema.py(中所有字段的列表?

from .models import MyModel
model_fields = MyModel.__dict__

没有给我字段列表。谢谢你的建议

简短回答:

model_fields = MyModel._meta.fields

长答案:

如果你想在不明确写出字段的情况下处理不同的模型,你可能想使用石墨烯的内置功能。你可以使用graphene_django库来完成这个

假设你在模型中有这个。py:

class ModelA(models.Model):
field_a = models.CharField(max_length=100)
class ModelB(models.Model):
field_b = models.CharField(max_length=100)  

那么在schema.py中,你可能想这样做:

import graphene
from graphene_django import DjangoObjectType
from .models import ModelA, ModelB

class ModelAType(DjangoObjectType):
class Meta:
model = ModelA
class ModelBType(DjangoObjectType):
class Meta:
model = ModelB

这些将创建一个石墨烯对象,并为您复制模型场。您甚至可以在上添加其他字段

class ModelBType(DjangoObjectType):
class Meta:
model = ModelB
model_a = graphene.Field(ModelA)

def resolve_model_a(self, info)
return ModelA.objects.filter(field_a=self.field_b)

最新更新