Django将查询结果插入数据库

时间:2015-05-26 12:11:58

标签: python django postgresql

我有一个数据库表,名为' Tags'像这样:

   ID   | Name   |  Uses 
 ------------------------
   1    | Python |   0
   2    | Java   |   0
   3    | C++    |   0
   4    | Ruby   |   0

我还有另一个表格' TagMap',用于将这些代码映射到用户,每个用户都可以拥有多个代码。

我想查询TagMap表以查找每个标签的使用总次数,然后将其保存到“使用”中。该标记的列。例如,如果5个用户拥有“Python'”标签,那么我希望“'使用'列阅读' 5'而不是' 0'。

我已经在网上浏览了如何做到这一点,但我的主要问题是我不确定我应该搜索什么,我们将不胜感激。

2 个答案:

答案 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可能会帮助您实现隔离。