我有一个数据库表,名为' Tags'像这样:
ID | Name | Uses
------------------------
1 | Python | 0
2 | Java | 0
3 | C++ | 0
4 | Ruby | 0
我还有另一个表格' TagMap',用于将这些代码映射到用户,每个用户都可以拥有多个代码。
我想查询TagMap表以查找每个标签的使用总次数,然后将其保存到“使用”中。该标记的列。例如,如果5个用户拥有“Python'”标签,那么我希望“'使用'列阅读' 5'而不是' 0'。
我已经在网上浏览了如何做到这一点,但我的主要问题是我不确定我应该搜索什么,我们将不胜感激。
答案 0 :(得分:0)
tag = Tags.objects.get(Name='Python')
count = TagMap.objects.filter(tag=tag).count()
tag.Uses = count
tag.save()
答案 1 :(得分:0)
Django会让你查询你的TagMap
模型(我假设你有一个Django模型)来获取给定标签的相应条目数。
然后,您将能够在单独调用ORM时更新使用计数器。
使用原始SQL查询,您可以在单个查询中执行这两项操作,但这不是Django ORM允许的内容(另请参阅Django subquery in insert)。
根据您的并发要求,如果您想坚持使用ORM进行那种非规范化,那么在第一个查询中使用select_for_update
可能会帮助您实现隔离。