小编Pet*_*r O的帖子

在创建之前检查是否存在唯一值

当Django在主键属性上运行.save()时,它首先执行SELECT以查看它是否已存在,然后决定是执行INSERT还是更新.有没有办法优雅地为独特但不是主键字段做同样的事情?

基本上,如果模型看起来像这样:

class Subject(models.Model):
    name = models.CharField(max_length=64, unique=True)
Run Code Online (Sandbox Code Playgroud)

我想在不抛出错误的情况下执行以下操作

>>> s=Subject(name="A new subject")
>>> s.save()
>>> s
<Subject: A subject>
>>> s=Subject(name="A new subject")
>>> s.save()
--- django.db.utils.IntegrityError: column name is not unique
Run Code Online (Sandbox Code Playgroud)

相反,我可以将'命名'命名为pk,但我不确定是否有一种优雅的Django方法来制作非pk独特的自动递增ID.

任何帮助表示赞赏.谢谢!

django django-models

13
推荐指数
1
解决办法
9973
查看次数

统计不同的共现

我有一个数据库,其中包含文档列表及其中的单词.每行代表一个术语.我要做的是计算一个单词出现的文档数量.

所以,鉴于以下内容:

+  doc  +  word  +
+-------+--------+
+   a   +  foo   +
+-------+--------+
+   a   +  foo   +
+-------+--------+
+   a   +  bar   +
+-------+--------+
+   b   +  bar   +
+-------+--------+
Run Code Online (Sandbox Code Playgroud)

我得到了结果

+  word  +  count  +
+--------+---------+
+  foo   +    1    +
+--------+---------+
+  bar   +    2    +
+--------+---------+
Run Code Online (Sandbox Code Playgroud)

因为foo只出现在一个文档中(即使它在该文档中出现两次),并且bar出现在两个文档中.

从本质上讲,我应该做的是(以为)以下查询吐出的单词的COUNT,

SELECT DISTINCT word, doc FROM table
Run Code Online (Sandbox Code Playgroud)

..但我无法弄明白.任何提示?

sql oracle

2
推荐指数
1
解决办法
1282
查看次数

根据列表写入条件

我在Python中编写了一个带有很多OR条件的if语句.是否有一种优雅的方式来处理列表,在条件而不是循环列表?

换句话说,什么比以下更漂亮:

if foo == 'a' or foo == 'b' or foo == 'c' or foo == 'd':
Run Code Online (Sandbox Code Playgroud)

我刚刚接受了Python,这种语言让我想要写得更好.

python list

1
推荐指数
1
解决办法
468
查看次数

标签 统计

django ×1

django-models ×1

list ×1

oracle ×1

python ×1

sql ×1