首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Django中加载JSON数据并创建模型

如何在Django中加载JSON数据并创建模型
EN

Stack Overflow用户
提问于 2021-01-19 08:24:38
回答 1查看 96关注 0票数 0

我正在尝试加载json数据文件,并使用给定的json数据文件创建播放器类。我在Django网站上查找了文档和一些关于堆栈溢出的帖子,但我不知道该怎么做。当我尝试在models.py上创建create()的类方法时,我一直收到没有表存在的错误。有人能帮我弄清楚吗??提前谢谢你

对于models.py,我有player类

代码语言:javascript
运行
复制
    class Player(models.Model):

    pos = models.CharField(max_length=2, default="")
    name = models.CharField(max_length=30, default="")

    age = models.PositiveIntegerField()
    posRank = models.PositiveIntegerField()

    throwAtt = models.PositiveIntegerField()
    throwYd = models.PositiveIntegerField()
    throwTD = models.PositiveIntegerField()
    interception = models.PositiveIntegerField()

    rushAtt = models.PositiveIntegerField()
    rushYd = models.PositiveIntegerField()
    rushTD = models.PositiveIntegerField()
    rushAvgYd = models.FloatField()

    target = models.PositiveIntegerField()
    rec = models.PositiveIntegerField()
    recYd = models.PositiveIntegerField()
    recAvgYd = models.FloatField()
    recTD = models.PositiveIntegerField()
    totalTD = models.PositiveIntegerField()

    fumble = models.PositiveIntegerField()
    fpts = models.FloatField(null=True)
    ppr = models.FloatField()
    totGames = models.PositiveIntegerField()

对于serializers.py,我有一个播放器序列化程序,如下所示

代码语言:javascript
运行
复制
    class PlayerSerializer(serializers.ModelSerializer):
    class Meta:

        model = Player
        fields = ('name', 'pos', 'age', 'posRank', 'throwAtt', 'throwYds', 'throwTD',
                  'interception', 'rushAtt', 'rushYd', 'rushTD', 'rushAvgYd', 'target',
                  'rec', 'recYd', 'recAvgYd', 'recTD' 'totalTD', 'fumble', 'fpts', 'ppr', 'totGames')


and inside views.py i have this class

class PlayerView(generics.CreateAPIView):
    players = Player.objects.all()
    serializer = PlayerSerializer(players, many=True)

    def get(self, request):
        output = json.load('api/NewNFLdata.json')
        for player in output:
            newPlayer = Player(pos=player["FantPos"],
                               name=player["Player"],
                               age=player["Age"],
                               posRank=player["PosRank"],
                               throwAtt=player["Att"],
                               throwYd=player["Yds"],
                               throwTD=player["TD"],
                               interception=player["Int"],
                               rushAtt=player["Att.1"],
                               rushYd=player["Yds.1"],
                               rushTD=player["TD.1"],
                               rushAvgYd=player["Y/A"],
                               target=player["Tgt"],
                               rec=player["Rec"],
                               recYd=player["Yds.2"],
                               recAvgYd=player["Y/R"],
                               recTD=player["TD.2"],
                               totalTD=player["TD.3"],
                               fumble=player["Fmb"],
                               fpts=player["FantPt"],
                               ppr=player["PPR"],
                               totGames=player["G"]
                               )
            newPlayer.save()
        return Response(serializer.data)

我试图通过查找堆栈溢出来自己完成这项工作,但找不到将json数据加载到模型中的方法

EN

Stack Overflow用户

发布于 2021-01-19 10:30:02

看一看fixtures:https://docs.djangoproject.com/en/3.1/howto/initial-data/

如果可以将JSON文件调整为适当的格式,就可以从Django的fixtures加载过程中获益,其中包括不必编写的字段验证。祝好运!

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65783909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档