我从BeatPortAPI获得了关于某个DJ的歌曲的详细信息,如下所示。你知道吗
if not get_obj_or_none(Song, name__iexact=song_name, artist=dj):
s = Song(song_id=song['id'], name=song_name, artist=dj, release_date=song['releaseDate'])
s.save()
这会将当前不在歌曲模型中的歌曲添加到歌曲模型中。你知道吗
现在很多歌曲在歌名字段有一些差异,很多歌曲因为歌名的细微差异而被重复。不可能编写代码来区分它们。我可以编辑他们使用管理,但我需要重新运行这个代码不时更新歌曲模型与新的歌曲。当我再次运行代码时,如何编辑或删除一些特定的歌曲对象而不读取它们?你知道吗
您可以尝试在
Song
模型中引入一个附加字段,用于存储歌曲名称的标准化版本。在存储新歌之前,您将检查规范化名称是否与数据库中任何现有歌曲的规范化名称匹配。你知道吗标准化可以通过以下方法的组合来实现
这将消除大量的重复项。你知道吗
上述操作的代码示例:
song_name.lower()
re.sub(' +', '_', song_name)
re.sub('-+', '_', song_name)
re.sub('[\(\)\[\]]', '', song_name)
re.sub('\.+', '_', song_name)
用下划线替换空格/连字符/点的操作当然可以合并。你知道吗
您可以创建第二个模型来保存同义歌曲名称,例如:
并在创建新的
Song
之前检查是否存在SongSynonym
相关问题 更多 >
编程相关推荐