Opened 7 years ago
Last modified 7 years ago
#29672 closed Bug
Returns an empty model field that is filled with a trigger in the database. — at Initial Version
| Reported by: | Vaskevich Aleksander | Owned by: | nobody |
|---|---|---|---|
| Component: | Uncategorized | Version: | 2.1 |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
my model
blank_and_null = {'blank': True, 'null': True}
class Message(....):
....
chat_local_id = models.BigIntegerField(
verbose_name='local id message for chat',
**blank_and_null)
....
I transferred some logic to the trigger database.
Here is my trigger
CREATE OR REPLACE FUNCTION public.inc_chat_local_id()
RETURNS trigger
LANGUAGE 'plpgsql' AS
$BODY$
DECLARE
new_count_message INTEGER;
BEGIN
UPDATE v1_chat_chat SET count_message = count_message + 1
WHERE id = NEW.chat_id;
SELECT v1_chat_chat.count_message INTO new_count_message FROM v1_chat_chat
WHERE id = NEW.chat_id;
NEW.chat_local_id = new_count_message;
RETURN NEW;
END;
$BODY$;
DROP TRIGGER IF EXISTS generate_chat_local_id on v1_chat_message;
CREATE TRIGGER generate_chat_local_id
BEFORE INSERT
ON v1_chat_message
FOR EACH ROW
EXECUTE PROCEDURE inc_chat_local_id();
It works as I expect
before insertion requests, it sets the value of chat_local_id
when I execute the insert query through django
chat_local_id empty field
when I re-query this entry, the chat_local_id is set to
Note:
See TracTickets
for help on using tickets.