试图找到此错误的底部。关于主题和答案的几个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=''
之类的东西不起作用。
不知道如何解决问题所以感谢您的反馈。
答案 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))