gpt4 book ai didi

python - Django 模型 - 多对多持久顺序

转载 作者:行者123 更新时间:2023-11-29 13:19:08 27 4
gpt4 key购买 nike

我正在寻找一种方法来获得 Many-to-many对象之间的关系,同时仍然保持秩序。一个示例用例是注册表。一个用户可以报名参加很多事件,但我需要知道谁先报名、第二、第三等...

有没有直接的方法来做到这一点?

最佳答案

你有两种简单的方法来做这样的事情:

  1. 使用时间戳,正如 Moses Koledoye 所建议的那样。
  2. 使用任何序列号(或序列号)。

例如,假设这些是您的 usersevents 表:

CREATE TABLE users
(
user_id INTEGER /* or SERIAL */ PRIMARY KEY,
user_name text
) ;

CREATE TABLE events
(
event_id INTEGER /* or SERIAL */ PRIMARY KEY,
event_name text
) ;

您可以用两种不同的方式定义多对多连接表:

CREATE TABLE users_x_events
(
user_id INTEGER REFERENCES users (user_id),
event_id INTEGER REFERENCES events (event_id),
created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT now(),
PRIMARY KEY (user_id, event_id)
) ;

CREATE TABLE users_x_events_v2
(
user_id INTEGER REFERENCES users (user_id),
event_id INTEGER REFERENCES events (event_id),
serial_id SERIAL,
PRIMARY KEY (user_id, event_id)
) ;

与序列号相比,我确实更喜欢时间戳,因为它提供了一条通常有用的信息。您经常想知道事情发生的时间(以及是谁造成的)。

如果您想要额外的安全性,您可以使用ON BEFORE INSERT OR UPDATE 触发器来防止对created_at(或serial_id) 列。

关于python - Django 模型 - 多对多持久顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44865259/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com