我一直得到一个以10为基数的int()的无效文本错误。有问题的字段是一个类的外键,该类只有一个属性,并且该属性是一个charfield,所以我不明白为什么会一直出现这个错误。如果我试图查询progress类,它可以正常工作,但是当我在tasks类中搜索progress值时,会得到错误。
我已经试过清除我的迁移并重新迁移,但没有效果。

class Program(models.Model):
    name =  models.CharField(max_length=30)

class Tasks(models.Model):
    program = models.ForeignKey(Program, max_length=30, on_delete=models.CASCADE)


>>> from app.models import *
>>> a = Program.objects.filter(name="GM")
>>> print(a)
<QuerySet [<Program: GM>]>
>>> a = Tasks.objects.filter(program="GM")
ValueError: invalid literal for int() with base 10: 'GM'

我应该能够抓取这个对象并操纵它,我确信有一个对象的程序设置为“gm”。

最佳答案

你的询问方式不对。
它应该是program__name="GM"而不是program="GM"

a = Tasks.objects.filter(program__name="GM")

它试图将字符串program="GM"与程序的整数"GM"相匹配,从而产生错误id

10-06 05:15
查看更多