Aby dodać ograniczenie do kolumny Musi istnieć najpierw w tabeli w Postgresql nie ma polecenia, którego można użyć, aby dodać kolumnę i jednocześnie ograniczenie. Muszą to być dwa oddzielne polecenia. Możesz to zrobić za pomocą następujących poleceń:
Najpierw wykonaj jako:
ALTER TABLE links_chatpicmessage ADD COLUMN sender INTEGER;
Używam integer
jako typ tutaj, ale powinien to być ten sam typ co id
kolumna auth_user
tabela.
Następnie dodajesz ograniczenie
ALTER TABLE links_chatpicmessage
ADD CONSTRAINT fk_someName
FOREIGN KEY (sender)
REFERENCES auth_user(column_referenced_name);
ADD CONSTRAINT fk_someName
częścią tego polecenia jest nazywanie Twoje ograniczenie, więc jeśli później będziesz musiał je udokumentować za pomocą jakiegoś narzędzia, które utworzy Twój model, będziesz miał nazwane ograniczenie zamiast losowej nazwy.
Służy również do celów administratorów, aby administrator wiedział, że ograniczenie pochodzi z tej tabeli.
Zwykle nazywamy go z pewną wskazówką, skąd pochodzi, do którego odnosi się w twoim przypadku, będzie to fk_links_chatpicmessage_auth_user
więc każdy, kto zobaczy tę nazwę, będzie wiedział dokładnie, co to za ograniczenie, bez wykonywania złożonego zapytania w INFORMATION_SCHEMA, aby się dowiedzieć.
EDYTUJ
Jak wspomniano w odpowiedzi @btubbs, możesz faktycznie dodać kolumnę z ograniczeniem w jednym poleceniu. Tak:
alter table links_chatpicmessage
add column sender integer,
add constraint fk_test
foreign key (sender)
references auth_user (id);