Sua consulta não faz sentido.
DELETE FROM database_userprofile WHERE user.username = 'some';
^^^^
Onde
user
vem de onde? Ele não é referenciado na consulta. É uma coluna de database_userprofile
? Nesse caso, você não pode escrever user.username
(a menos que seja um tipo composto, nesse caso você teria que escrever (user).username
para dizer ao analisador que; mas duvido que seja um tipo composto). A causa imediata é que
user
é uma palavra reservada
. Você não pode usar esse nome sem citá-lo:DELETE FROM database_userprofile WHERE "user".username = 'some';
... no entanto, essa consulta ainda não faz sentido, apenas dará um erro diferente:
regress=> DELETE FROM database_userprofile WHERE "user".username = 'some';
ERROR: missing FROM-clause entry for table "user"
LINE 1: DELETE FROM database_userprofile WHERE "user".username = 'so...
Meu palpite é que você está tentando fazer uma exclusão sobre uma junção. Estou assumindo que você tem tabelas como:
CREATE TABLE "user" (
id serial primary key,
username text not null,
-- blah blah
);
CREATE TABLE database_userprofile (
user_id integer references "user"(id),
-- blah blah
);
e você está tentando excluir com uma condição na outra tabela.
Se sim, você não pode basta escrever
user.username
. Você deve usar:DELETE FROM database_userprofile
USING "user"
WHERE database_userprofile.user_id = "user".id
AND "user".username = 'fred';
Você notará que coloquei "usuário" entre aspas. Isso porque é uma palavra-chave e não deve ser usada para nomes de tabelas ou outros identificadores definidos pelo usuário. Aspas duplas o forçam a ser interpretado como um identificador e não uma palavra-chave.