sha*_*ker 1 django words character count
给定一个包含Boolean和TextField字段的模型,我想做一个查询,找到符合某些条件的记录,并在TextField中包含多于"n"个单词.这可能吗?例如.:
class Item(models.Model):
...
notes = models.TextField(blank=True,)
has_media = models.BooleanField(default=False)
completed = models.BooleanField(default=False)
...
Run Code Online (Sandbox Code Playgroud)
这很简单:
items = Item.objects.filter(completed=True,has_media=True)
Run Code Online (Sandbox Code Playgroud)
但是如何过滤"注释"字段超过25个单词的那些记录的子集?
试试这个:
Item.objects.extra(where=["LENGTH(notes) - LENGTH(REPLACE(notes, ' ', ''))+1 > %s"], params=[25])
Run Code Online (Sandbox Code Playgroud)
此代码使用Django的extraqueryset方法添加自定义WHERE子句.该WHERE子句中的计算基本上计算"空格"字符的出现,假设所有单词都以一个空格字符作为前缀.在第一个单词的结果帐户中添加一个.
当然,这个计算只是真实字数的近似值,所以如果必须精确,我会用Python做单词计数.
| 归档时间: |
|
| 查看次数: |
1623 次 |
| 最近记录: |