gpt4 book ai didi

django - 在 Django 应用程序的数据库列中保存标签(逗号分隔)会使大数据库变慢

转载 作者:搜寻专家 更新时间:2023-10-30 23:45:19 25 4
gpt4 key购买 nike

在我的 Django 应用程序中,我的系统将根据某些标准生成 标签。并且一本书将被标记多个标签。

目前在 book 表中,我将标签存储为逗号分隔值。

 class books(models.Model):
book_id = models.AutoField(primary_key=True, auto_created=True)
search_tags = models.TextField(default='[]')

在数据库中,标签将如下所示。

HUPB,CWGL,ABNG,USXQ,CEXV,BYPC

但是当我使用标签搜索它时,我必须使用 search_tags__contains('ABNG')哪个有效。但现在我的数据库预计会变大,一本书可以有超过 100 个唯一标签,我的数据库中可以有数百万本书。

这看起来是一个非常普遍的问题,所以想知道是否有人可以建议一种好的技术来实现同样的目标。

最佳答案

正确的模式是对单独的标签表使用多对多关系。

class Tag(models.Model):
name = models.CharField(max_length=4)

class Book(models.Model):
tags = models.ManyToManyField(Tag)

现在您可以执行 Book.objects.filter(tags__name='ABNG')

(注意,Django 模型名称应该是单数,并以大写字母开头。)

关于django - 在 Django 应用程序的数据库列中保存标签(逗号分隔)会使大数据库变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29513718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com