【问题标题】:ValueError Django值错误 Django
【发布时间】:2023-04-07 08:53:01
【问题描述】:

我在 Django 2.0.2 中遇到了一些问题 ..

在 model.py 文件中我有:

class Team(models.Model):
    name = models.CharField(max_length=256 , unique=True)
    details = models.TextField()

    def __str__(self):
        return self.name


class GameScore(models.Model):
    def __str__(self):
        return '{} {} - {} {}'.format(self.first_team.name,self.first_team_score,
                                      self.second_team_score,self.second_team.name)
    first_team = models.ForeignKey\
        (Team,related_name='first_team',null=True,on_delete=models.PROTECT)
    second_team = models.ForeignKey\
        (Team,related_name='second_team',null=True,on_delete=models.PROTECT)
    first_team_score = models.IntegerField(default=0)
    second_team_score = models.IntegerField(default=0)
    GameDate = models.DateTimeField(auto_now=True)

当我尝试添加 GameScore 时,错误来了! 异常类型:ValueError 异常值: int() 以 10 为底的无效文字:'RM'

【问题讨论】:

  • 当您遇到该错误时,请添加您尝试运行的代码。
  • 我从 Django 2.0.2 的管理页面尝试
  • 你能添加错误的堆栈跟踪吗?还有,你如何向管理员注册你的模型?任何admin.ModelAdmin
  • 请通过编辑您的问题粘贴 admin.py 文件,而不是在某些 3rd 方托管中作为文件。

标签: python django django-models django-forms


【解决方案1】:

通过检查您的数据库,出现了一些错误。在 GameScore 实例中 id=3 具有 first_team_id='RM' ,但它应该是一些 integer 值,表示 Team 实例。
结果

In [13]: GameScore.objects.get(id=3).__dict__
Out[13]: 
{'GameDate': datetime.datetime(2018, 3, 15, 12, 40, 3, 255264, tzinfo=<UTC>),
 '_state': <django.db.models.base.ModelState at 0x7f99acc309b0>,
 'first_team_id': 'RM',
 'first_team_score': 0,
 'id': 3,
 'second_team_id': 'Barca',
 'second_team_score': 0}


如何解决此问题?
在检查数据库时,我发现许多first_team_idsecond_team_idstr 类型。据我所知,除非有人手动更改其值,否则它们永远不会成为 str 类型。
Solution-1
删除所有数据并重新生成表,并且不要将 string 值分配给 second_team_idfirst_team_id
解决方案 2
手动将second_team_idfirst_team_id 的值更改为某个整数,表示它们对应的FK 关系

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-08
    • 2019-04-26
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    • 2015-02-17
    相关资源
    最近更新 更多