スキップしてメイン コンテンツに移動

投稿

注目

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

docker login failes Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock:

外資系IT大企業を辞めてスタートアップへ転職し、そして無職になったこと

臨済宗の宝泉寺で三泊四日の修行した

機械学習の学習をipython notebookで行うとパソコンがフリーズする。

Install opencv in pyenv-virtualenv

Error when building IONIC2 android "You have not accepted the license agreements of the following SDK"

Japanese Input for Japanese Keyboard on Ubuntu LTS 16.04

Amazon Product Advertisement API ItemSearch with BeautifulSoup4 and lxml in Python3.x