异常值:无法分配“x”:“y”必须是“z”实例

2024-06-01 04:03:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个脚本,可以把足球器材拉到我的mySQL数据库中。如果我不试着把这个季节的ID拉进来,它就会起作用。但当我把季节性标识放进去的时候,它就坏了,我不知道为什么。任何帮助都将不胜感激。你知道吗

模型如下:

class StraightredSeason(models.Model):
    seasonid = models.IntegerField(primary_key = True)
    seasonyear = models.CharField(max_length = 4)
    seasonname = models.CharField(max_length = 36)

    def __unicode__(self):
        return self.seasonid

    class Meta:
        managed = True
        db_table = 'straightred_season'

class StraightredTeam(models.Model):
    teamid = models.IntegerField(primary_key=True)
    teamname = models.CharField(max_length=36)
    country = models.CharField(max_length=36,null=True)
    stadium = models.CharField(max_length=36,null=True)
    homepageurl = models.TextField(null=True)
    wikilink = models.TextField(null=True)
    teamcode = models.CharField(max_length=5,null=True)
    teamshortname = models.CharField(max_length=24,null=True)
    currentteam = models.PositiveSmallIntegerField(null=True)

    def __unicode__(self):
        return self.teamname

    class Meta:
        managed = True
        db_table = 'straightred_team'

class StraightredFixture(models.Model):
    fixtureid = models.IntegerField(primary_key=True)
    home_team = models.ForeignKey('straightred.StraightredTeam', db_column='hometeamid', related_name='home_fixtures')
    away_team = models.ForeignKey('straightred.StraightredTeam', db_column='awayteamid', related_name='away_fixtures')
    fixturedate = models.DateTimeField(null=True)
    fixturestatus = models.CharField(max_length=24,null=True)
    fixturematchday = models.IntegerField(null=True)
    spectators = models.IntegerField(null=True)
    hometeamscore = models.IntegerField(null=True)
    awayteamscore = models.IntegerField(null=True)
    homegoaldetails = models.TextField(null=True)
    awaygoaldetails = models.TextField(null=True)
    hometeamyellowcarddetails = models.TextField(null=True)
    awayteamyellowcarddetails = models.TextField(null=True)
    hometeamredcarddetails = models.TextField(null=True)
    awayteamredcarddetails = models.TextField(null=True)
    soccerseason = models.ForeignKey('straightred.StraightredSeason', db_column='soccerseasonid', related_name='fixture_season')


    def __unicode__(self):
        return self.fixtureid

    class Meta:
        managed = True
        db_table = 'straightred_fixture'

StraightredSeason表包含以下内容:

mysql> select * from straightred_season;
+----------+------------+------------+
| seasonid | seasonyear | seasonname |
+----------+------------+------------+
|     1025 | 16/1       | EPL        |
+----------+------------+------------+

但每当我运行下面的代码时,就会出现以下错误:

无法分配“1025”:StraighredFixture.soccerseason公司必须是“StraightredSeason”实例。你知道吗

            fixtureUpdate = StraightredFixture(fixtureid=fixture['Id'],
                                               away_team_id = fixture['AwayTeam_Id'],
                                               home_team_id = fixture['HomeTeam_Id'],
                                               fixturedate = fixture['Date'],
                                               fixturestatus = fixture['Time'],
                                               fixturematchday = fixture['Round'],
                                               spectators = fixture['Spectators'],
                                               hometeamscore = fixture['HomeGoals'],
                                               awayteamscore = fixture['AwayGoals'],
                                               homegoaldetails = fixture['HomeGoalDetails'],
                                               awaygoaldetails = fixture['AwayGoalDetails'],
                                               hometeamyellowcarddetails = fixture['HomeTeamYellowCardDetails'],
                                               awayteamyellowcarddetails = fixture['AwayTeamYellowCardDetails'],
                                               hometeamredcarddetails = fixture['HomeTeamRedCardDetails'],
                                               awayteamredcarddetails = fixture['AwayTeamRedCardDetails'],
                       soccerseason = 1025)

Tags: selftruedbmodelsnulllengthfixturemax
2条回答

尝试用soccerseason_id = 1025替换soccerseason = 1025soccerseason是与StraightredSeason的关系,因此您应该在尝试设置此属性时提供它的实例。你知道吗

不能将ForeignKey对象设置为int。您可以通过在字段中附加_id来设置ForeignKey(与FK对象关联的id):

fixtureUpdate = StraightredFixture(fixtureid=fixture['Id'],
                                   ...
                                   soccerseason_id = 1025)
#                                              ^^^

相关问题 更多 >