【发布时间】:2016-11-22 11:32:05
【问题描述】:
我有以下型号:
class Subspecies(models.Model):
species = models.ForeignKey(Species)
subspecies = models.CharField(max_length=100)
def __str__(self):
return self.species.species_english+" "+self.species.species+" "+self.subspecies
def __unicode__(self):
return self.species.species_english+" "+self.species.species+" "+self.subspecies
请注意,ForeignKey 字段 species 在 __str__ 和 __unicode__ 方法中使用。我做了这个过滤查询:
l = list(Subspecies.objects.filter(subspecies__contains=request.GET.get('term')).order_by('subspecies')[:10])
这几乎是我想要的,除了不完全。我真正想要的是一个过滤器,它检查对象的__str__ 表示是否包含某些字符组,而不仅仅是检查subspecies 字段。而不是subspecies__contains=...,而是__str____contains=...,但这当然行不通。
这可能吗?如果是这样,我将如何进行此查询?
谢谢!
【问题讨论】:
-
为什么不能只过滤相关模型中的三个字段?
-
是的,这就是我最终所做的,我宁愿能够一起搜索整个短语,但使用 OR 单独过滤几乎可以。
标签: python django filter django-queryset