如何通过Django外键描述进行查询?

时间:2014-05-08 18:38:41

标签: python django django-models django-orm

如果我有这个代码

class Father(models.Model):
    Description = models.CharField(max_length=50)
    Code        = models.IntegerField(max_length=2, unique=True)
    def __unicode__(self):
        return "%s (%s)" % (self.Description, self.Code)

class Son(models.Model):
    Father = models.ForeignKey(Father)
    Description = models.CharField(max_length=50)

我想通过显示给用户的选择框创建过滤器。

假设我在父亲中有一条记录,如:

  # |  Description | Code
--------------------------
  1 | Fred Nichols | 100

在ForeignKey字段中应该有一个HTML内容,如:

<option value="1">Fred NIchols (100)</option>

如果我尝试通过子模型中的字段进行查询:

Son.objects.filter(Father__Contains="Fred")

我收到错误。在Django的文档中,最近的选项应该是:

Son.objects.filter(Father__Description__contains="Fred")

或任何列数据

Son.objects.filter(Q(Father__Description__contains="Fred") | Q(Father__Code__Contains="Fred") )

我想制作与所显示的用户信息最相似的内容。

我怎样才能做出可以做到这一点的查询?

1 个答案:

答案 0 :(得分:0)

一步到位,你可以这样做:

Son.objects.filter(father__Description__contains="Fred")

你做得对,唯一错误的是:

引用实体父应该是模型的小写名称

reference