Django datatable: упорядочивание по последней записи
У меня есть таблица данных с 11 столбцами. Первый столбец - ID (pk), и таблица упорядочена по этому первичному ключу.
order: [[1, 'desc']]
Я хочу упорядочить все записи в моей таблице по последнему добавлению к первому, как это происходит сейчас, но я не хочу, чтобы некоторые ID были пропущены, если я удалю одну запись.
Я пытался упорядочить их по столбцу «Дата», но это не то, что мне нужно. Я попытался скрыть ID столбца, но тогда я не могу упорядочить их по последнему добавленному столбцу.
Пример: Перед удалением:
ID | NAME |
---|---|
1 | John |
2 | Smith |
3 | Mark |
4 | Johnny |
После удаления ряда Smith (2):
ID | NAME |
---|---|
1 | John |
3 | Mark |
4 | Johnny |
Что я хочу:
ID | NAME |
---|---|
1 | John |
2 | Mark |
3 | Johnny |
Я думаю о новом пользовательском поле ID, но я хочу, чтобы оно обновлялось каждый раз при удалении средней записи. Другой способ - скрыть столбец ID, но если я нажму, чтобы отсортировать их по имени, я не смогу отсортировать их обратно по ID, только если обновлю страницу. Есть ли у вас какие-нибудь решения? Спасибо
Пожалуйста, не надо. Первичные ключи следует рассматривать как маркеры, которые в данном случае «случайно» оказываются целыми числами, но это уже технические детали.
В базе данных часто используются первичные ключи для ссылки на объект, через FOREIGN KEY
. Если вы обновляете первичный ключ, все, что должно ссылаться на эти первичные ключи, также должно быть обновлено, что может иметь огромное влияние на базу данных. Но еще хуже то, что не все явно имеет FOREIGN KEY
ограничение, что делает невозможным гарантировать, что все было обновлено правильно.
Moreover, primary keys are typically used in the URLs to refer to these objects. This thus means that if you update the primary key, then a (bookmarked) URL will no longer point to Mark
, but to Johnny
after the update. As the w3 organization says: Cool URIs don't change [w3.org].
Вы можете использовать скрытый столбец [datatables-doc], и сортировать по этому скрытому столбцу. Как уже говорилось, первичный ключ следует рассматривать как техническую деталь, а не как значение для отображения или манипулирования: конечно, первичные ключи - это, например, целые числа, но сложение двух первичных ключей вместе не имеет смысла. Так что это не «целые числа» со всеми крутыми возможностями целых чисел, это целые числа для эффективного хранения данных.