django 有什么好方法对 tags 的标题按字排序?

2020-04-29 23:13:36 +08:00
 python30
class Tags(models.Model):
	name = models.CharField(_(u'标签'), max_length=255)
	excerpt = models.TextField(_(u'简介'))
    
class Topic(models.Model):
	title = models.CharField(_(u'标题'), max_length=255)
	body = models.TextField(_(u'内容'))
    tags = models.ManyToManyField('Tags', verbose_name = _(u'标签'), blank = True)

如果 tags 都是词语,如:高高兴兴 高大 很高 趾高气扬 高见 发高烧 挑高球 三高 升高 对应:tags.name

topic 是单个字:高 对应:topic.title

怎么样 给 tags 排序 分别挑出 高(topic.title) 开头的词 , 高在中间的词, 高在末尾的词?

    如下代码是想挑出 字高 开头的词语。并不成功!!
	    tagslist = topic.tags.all()
        index_list = []
		for a, b in enumerate(tagslist):
				if str(b).find(str(topic.title))==0:
					index_list.append(b)
		context['index_list'] = index_list

差不多就是要实现下面这个功能

有什么好办法实现吗?

1939 次点击
所在节点    Python
4 条回复
Vegetable
2020-04-29 23:23:42 +08:00
https://docs.djangoproject.com/en/3.0/ref/models/querysets/#startswith 开始
https://docs.djangoproject.com/en/3.0/ref/models/querysets/#endswith 结束

在中间的这个有点不太好处理,前两个本质上都是
```SQL
SELECT ... WHERE headline LIKE '%Lennon';
```
你可以考虑直接使用 https://docs.djangoproject.com/en/3.0/ref/models/querysets/#regex 正则表达式
Hstar
2020-04-29 23:25:37 +08:00
这帖子看得一头雾水,标题是按字排序,内容是如何关键词筛选。
如果是你文中的问题,就是楼上的方法。
python30
2020-04-30 22:44:06 +08:00
@Vegetable

index_listcc =Tags.objects.filter(name__startswith='高')

好像取不到值

这个查询只能英文字符?
不能是中文的?
python30
2020-04-30 23:07:33 +08:00
@Vegetable
@Hstar

```
class Topic(models.Model):
title = models.CharField(_(u'标题'), max_length=255)
body = models.TextField(_(u'内容'))
tags = models.ManyToManyField('Tags', verbose_name = _(u'标签'), blank = True)

#这写法取不到值
def get_list_index(self):
print (self.tags.filter(name__startswith=str(self.title)))
return self.tags.filter(name__startswith=self.title)

#这样写也不对
def get_index(self):
print (Tags.objects.filter(name__startswith=str(self.title)))
return Tags.objects.filter(name__startswith=self.title)
```

把上面的函数写在 views.py 也是取不到值
是写法不对还是取不到中文字符?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/667442

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX