投稿

2月, 2018の投稿を表示しています

SQLのuniqueはDjangoではunique_together

以下DBはすべてPostgreSQLを使い、 SQLとORMでの挙動の比較をしました


SQLの unique制約はdjangoではunique_togetherに対応するらしい。たとえば、SQLの

CREATE TABLE contacts (
    id integer primary key,
    name text,
    phone_number integer,
    UNIQUE(name, phone)
) と、Djangoのmodel

class Contacts:
    name=models.CharField(max_length=128)
    phone_number=models.IntegerFIeld()

    Meta:
        unique_together=(name, phone)
は同じこと。上記2つの例では、Uniqueの制約は、ペアの組み合わせに対してかかる。なので、
 ('Alice', 00000000000)
 ('Alice', 00000000001)
の2つは、データベースへの追加が可能である。また、Djangoでは primary_key=True は null=Fals, unique=True を意味する[1]。

primary_key=True implies null=False and unique=True. Only one primary key is allowed on an object.
ちなみに、カラムごとにunique制約をかけた場合、SQLもDjango ORMも同じように、カラムそれぞれについての重複を許さない、上記より、さらに厳しい制約となる。たとえば、次のmodelでは、nameもphone_numberもそれぞれで、uniqueであることを求められている。(name, phone_number)のペアでuniqueであることよりも厳しい制約がかかる。

class Contacts:
    name=models.CharField(max_length=128, unique=True)
    phone_number=models.IntegerFIeld(unique=True) 次のSQLの挙動も同…

CSS for PCCS

CSS containing PCCS and HEX pairs.
 .text-v1 {
  color: #b91f57;
}

.text-v2 {
  color: #d02f48;
}

.text-v3 {
  color: #dd443b;
}

.text-v4 {
  color: #e95b23;
}

.text-v5 {
  color: #e67800;
}

.text-v6 {
  color: #f49d00;
}

.text-v7 {
  color: #f1b500;
}

.text-v8 {
  color: #eec900;
}

.text-v9 {
  color: #d2c100;
}

.text-v10 {
  color: #a8bb00;
}

.text-v11 {
  color: #58a91d;
}

.text-v12 {
  color: #00a15a;
}

.text-v13 {
  color: #00926e;
}

.text-v14 {
  color: #00857f;
}

.text-v15 {
  color: #007488;
}

.text-v16 {
  color: #00709b;
}

.text-v17 {
  color: #00609c;
}

.text-v18 {
  color: #005ba5;
}

.text-v19 {
  color: #1a54a5;
}

.text-v20 {
  color: #534aa0;
}

.text-v21 {
  color: #703f96;
}

.text-v22 {
  color: #81378a;
}

.text-v23 {
  color: #8f2e7c;
}

.text-v24 {
  color: #ad2e6c;
}

.text-b2 {
  color: #ef6c70;
}

.text-b4 {
  color: #fa8155;
}

.text-b6 {
  color: #ffad36;
}

.text-b8 {
  color: #fad831;
}

.text-b10 {
  color: #b7c82b;
}

.text-b12 {
  color: #41b879;
}

.text-b14 {
  c…