当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.
任何帮助表示赞赏.谢谢!
我有一个数据库,其中包含文档列表及其中的单词.每行代表一个术语.我要做的是计算一个单词出现的文档数量.
所以,鉴于以下内容:
+ 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)
..但我无法弄明白.任何提示?
我在Python中编写了一个带有很多OR条件的if语句.是否有一种优雅的方式来处理列表,在条件而不是循环列表?
换句话说,什么比以下更漂亮:
if foo == 'a' or foo == 'b' or foo == 'c' or foo == 'd':
Run Code Online (Sandbox Code Playgroud)
我刚刚接受了Python,这种语言让我想要写得更好.