如何跨越django中的查找关系?

gat*_*ath 1 django

我在下面的查找中哪里出错了?

我的模型:

Class Item(models.Model):
    item_code = models.CharField(max_length=10)
    name      = models.CharField(max_length=255)
    ....

Class Stock(models.Model):
    item_code = models.ForeignKey( Item )
    qty       = models.IntegerField()
    ...
Run Code Online (Sandbox Code Playgroud)

现在我想用 Item.item_code 获取所有 Stock 对象

stock_items = Stock.objects.filter(item__item_code__contains='101')
Run Code Online (Sandbox Code Playgroud)

我收到错误:

FieldError: Cannot resolve keyword 'item' into field. Choices are: id, item_code, qty, restock_level, userid 
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

加特

Dom*_*opa 5

您必须使用以下内容:

stock_items = Stock.objects.filter(item_code__item_code__contains='101')
Run Code Online (Sandbox Code Playgroud)

第一个字段名称是 Stock 模型中的字段,在本例中是 item_code,而不是 item。

为了以你所做的方式使用。您必须将 Stock 模型更改为以下内容:

Class Stock(models.Model):
    item = models.ForeignKey(Item)
    qty = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)

那么这将起作用:

stock_items = Stock.objects.filter(item__item_code__contains='101')
Run Code Online (Sandbox Code Playgroud)