0
class TagSynonym(models.Model):
source_tag_name = models.CharField(max_length=255, unique=True)
target_tag = models.ForeignKey(Tag, related_name='tag_synonyms', null=True)
class Tag(models.Model):
name = models.CharField(max_length=255, unique=True)
used_count = models.PositiveIntegerField(default=0)
class Meta:
ordering = ('-used_count', 'name')
对于给定的查询q
:
我想所有这些包含它的名称,或在相关同义词的source_tag_name查询标签。
我也想让排序顺序保留ordering
。排序的两个查询的集列表
我有一个像下面
tags_by_name = tag_all.filter(name__contains=q)
tags_by_synonyms = tag_all.select_prefetched('tag_synonyms').filter(tag_synonyms__source_tag_name__contains=q).distinct()
tags = tags_by_name | tags_by_synonyms
tags = tags.distinct()
查询我不知道,如果上面的代码是正确的。 有没有更好的方法来做到这一点?