簡體   English   中英

django 石墨烯如何從 model.py 中獲取字段列表

[英]django graphene how to get a list of fields from the model.py

我正在使用 graphql 和 django。 我的 model.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)

如何獲取不同 class(即 schema.py)中所有字段的列表?

from .models import MyModel

model_fields = MyModel.__dict__

沒有給我一個字段列表。 謝謝你的建議

簡短的回答:

model_fields = MyModel._meta.fields

長答案:

如果您想在不明確寫出字段的情況下處理不同的模型,您可能希望在石墨烯的內置功能中使用。 您可以使用graphene_django庫來執行此操作

所以假設你在models.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

這些將創建一個石墨烯 object 並為您復制 model 字段。 您甚至可以在以下位置添加其他字段:

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)


暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM