【发布时间】:2014-11-23 02:37:27
【问题描述】:
我有一个在这里定义的模型:
class VectorSet(models.Model):
word = models.CharField(max_length=255)
weight = models.IntegerField()
session = models.ForeignKey(ResearchSession)
我想编写一个函数,该函数将获取一个单词列表和一个 ResearchSession,对于该单词列表中的每个单词,如果它尚不存在,则创建一个权重为 1 的新行,否则采用行并将权重增加 1。
到目前为止,我已经得到了这个:
def train(words, session):
for i in words:
result, created = VectorSet.objects.get_or_create(word=i, session=session,
defaults={'weight' : 1})
if not created:
result.weight = F('weight') + 1
result.save()
我相当有信心有一种方法可以通过一个查询来做到这一点,但是我不能完全弄清楚这可能是什么,或者是否可以通过原始 SQL 使用 django 代码。
【问题讨论】:
-
我觉得很好。
标签: python django postgresql