ValueError:带有基数10的int()的无效文字似乎与ForeignKey有关

时间:2018-01-19 00:54:06

标签: django django-models

试图找到此错误的底部。关于主题和答案的几个SO问题包括:删除以前的迁移,在字段的模型中设置默认值,或使用GenericForeignKey。到目前为止,没有人解决我的问题。

我相当确定该问题与ForeignKey有关,并且默认情况下已使用int(),即使该字段为CharField

以下是我正在尝试使用的模型中的相关字段:

product_code = models.ForeignKey(Products, null=False)

以下是它所指的父模型中的字段(Products):

code = models.CharField(unique=True, max_length=16)

以下是发生问题的查询:

# returns 'A_17'
product_code = Products.objects.get(id=data['product_id']).code

# error triggered here:
print(ProductPositions.objects.filter(product_code=product_code))

# ValueError: invalid literal for int() with base 10: 'A_17'

所以看起来它是端到端的字符串,但我想用ForeignKey"默认"到整数或其他问题与此相关。不知道如何覆盖它,因为default=''之类的东西不起作用。

不知道如何解决问题所以感谢您的反馈。

1 个答案:

答案 0 :(得分:1)

您正在使用实际代码进行查找,并且正在预测主键。你可以改变这两种方式 使用主键:

product_code = Products.objects.get(id=data['product_id'])
print(ProductPositions.objects.filter(product_code=product_code.pk))

或者使用代码(__会告诉Django通过外键引用字段):

product_code = Products.objects.get(id=data['product_id']).code
print(ProductPositions.objects.filter(product_code__code=product_code))