Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django datetime主键不';t约束唯一_Python_Django_Postgresql_Django Models_Django South - Fatal编程技术网

Python Django datetime主键不';t约束唯一

Python Django datetime主键不';t约束唯一,python,django,postgresql,django-models,django-south,Python,Django,Postgresql,Django Models,Django South,这是我的模型: class MyModel(models.Model): timestamp = models.DateTimeField(primary_key=True) fielda = models.TextField() 当我调用syncdb时,django没有为postgresql添加时间戳唯一性约束,即使它给了它主键约束 如果我将timestamp更改为justunique=True,django将创建unique约束。但是,如果我将unique=True和pri

这是我的模型:

class MyModel(models.Model):
    timestamp = models.DateTimeField(primary_key=True)
    fielda = models.TextField()
当我调用
syncdb
时,django没有为
postgresql
添加时间戳唯一性约束,即使它给了它主键约束

如果我将timestamp更改为just
unique=True
,django将创建unique约束。但是,如果我将
unique=True
primary\u key=True
组合在一起,django不会创建unique约束

我的信息:

  • django south v1.8
  • django 1.4
  • python 2.7
  • postgresql 9.1
编辑: 如果我在两次不同的运行(不是同一个过程)中两次使用相同的精确时间戳保存模型,它不会像应该的那样提升和提升IntegrityError。但是,当它创建唯一约束而没有主键时,它会使用相同的代码

编辑2: 这是当我在postgresql中使用
约束“MyModel\u pkey”主键(“timestamp”)
时运行的代码,而不是仅使用
timestamp=models.DateTimeField(PRIMARY\u KEY=True)

当连续运行两次时,它不会引发
IntegrityError
。但是,使用
unique=True
和not
primary\u key=True
,它确实会提高
积分错误

,也许该方法可以为您的问题带来一些启发

从技术上讲,主键约束只是 唯一约束和非空约束。那么下面两个呢, 表定义接受相同的数据:

CREATE TABLE products (
  product_no integer UNIQUE NOT NULL,
  name text,
  price numeric );

CREATE TABLE products (
  product_no integer PRIMARY KEY,
  name text,
  price numeric );
[…]主键表示可以删除一列或一组列 用作表[…]中行的唯一标识符添加 主键将自动在上创建唯一的btree索引 主键中使用的列或列组。[……]

将我与解释我问题的同一个问题(已回答)联系起来


主键是否总是意味着唯一的约束?您不能有重复的主键。对我来说,这不是问题:您的数据库在字段“timestamp”上有约束“primary KEY”,您不需要在同一字段上有额外的约束“UNIQUE”,主键约束就可以完成任务。例如,如果您查看其他表,Django生成的自动“id”字段作为主键没有“唯一”约束。我编辑了有关您的注释的问题。您确定它是相同的时间戳吗?是否精确到微秒,因为如果不是,它当然不是唯一的。我再次编辑了这个问题。
CREATE TABLE products (
  product_no integer UNIQUE NOT NULL,
  name text,
  price numeric );

CREATE TABLE products (
  product_no integer PRIMARY KEY,
  name text,
  price numeric );