update_or_create 导致 int() 以 10 为底的无效文字:

我写了以下代码:


def parse_match_data(self, match_data, statistics_data):

        data = {"all_advanced_fields_populated": True}

        if(match_data["match_hometeam_halftime_score"] == "" or match_data["match_hometeam_halftime_score"] == ""):

            data["all_fields_populated"] = False

            data["home_fh_goals"] = 0

            data["home_sh_goals"] = 0

            data["away_fh_goals"] = 0

            data["away_sh_goals"] = 0

        else:

            data["all_fields_populated"] = True

            data["home_sh_goals"] = 0 if int(match_data["match_hometeam_score"]) - int(match_data["match_hometeam_halftime_score"]) < 0 else int(match_data["match_hometeam_score"]) - int(match_data["match_hometeam_halftime_score"])

            data["away_sh_goals"] = 0 if int(match_data["match_awayteam_score"]) - int(match_data["match_awayteam_halftime_score"]) < 0 else int(match_data["match_awayteam_score"]) - int(match_data["match_awayteam_halftime_score"])

            data["home_fh_goals"] = int(match_data["match_hometeam_halftime_score"])

            data["away_fh_goals"] = int(match_data["match_awayteam_halftime_score"])  


        required_keys = ["Ball Possession", "Goal Attempts", "Shots on Goal"]

        if(statistics_data):

            for statistic in statistics_data:

                if(statistic["type"] in required_keys):

                    data["home_" + statistic["type"].lower().replace(" ", "_")] = statistic["home"].strip('%')

                    data["away_" + statistic["type"].lower().replace(" ", "_")] = statistic["away"].strip('%')


使用统计方法中函数的“创建”部分似乎update_or_create一切正常,但是当它需要“更新”一个项目时,它会引发以下错误:

一只斗牛犬
浏览 108回答 1
1回答

慕沐林林

该错误ValueError: invalid literal for int() with base 10: ''清楚地表明您正在尝试用空值 => ' ' 填充整数必填字段(可以是 FK )。所以这个字段不是必需的,可以为空,然后你必须添加blank=True, null=True到它的定义中:your_field&nbsp;=&nbsp;models.IntegerField(default=0,&nbsp;blank=True,&nbsp;null=True)your_FK_field&nbsp;&nbsp;=&nbsp;models.ForeignKey(TheOtherModel,&nbsp;blank=True,&nbsp;null=True)或者此字段是必需的并且必须具有整数值,在这种情况下,您必须确保该值是有效的整数。在这两种情况下,最好打印以下值以查看哪个值为空:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;home_id&nbsp;=&nbsp;fixture["match_hometeam_id"] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;away_id&nbsp;=&nbsp;fixture["match_awayteam_id"] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;league_id&nbsp;=&nbsp;fixture["league_id"] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;country_id&nbsp;=&nbsp;fixture["country_id"] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;date&nbsp;=&nbsp;fixture["match_date"]&nbsp;+&nbsp;"&nbsp;"&nbsp;+&nbsp;fixture["match_time"] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;home_name&nbsp;=&nbsp;fixture["match_hometeam_name"].split("&nbsp;(")[0] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;away_name&nbsp;=&nbsp;fixture["match_awayteam_name"].split("&nbsp;(")[0] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;league_name&nbsp;=&nbsp;fixture["league_name"] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;country_name&nbsp;=&nbsp;fixture["country_name"]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python