Должно быть, вы хотели сказать, что нет смысла делать отдельную таблицу для этого, или как? Просто ведь у choices обратная сторона медали -- хранятся сами значения, которые в каждой строчке повторяются, значит больше жрут места?
@sim3x
0. Вы имеете в виду, в разные модели?
1. Для чего модель ItemUser, для записи взятых айтемов? Об обновление чего идёт речь, об обновление полей? Немного не понял, как там будет race condition.
sim3x, вы имеете в виду, предполагается ли возврат, или нет? Если да, то и да и нет, то есть в случае "расхода" убавляется общее количество у Item'а и удаляется запись из TakenItem.
sim3x, я думал, это не важно в рамках решения данного вопроса.
Цель — учёт деталей на складе и запись того, кто, когда, сколько и чего забрал.
Item — модель одного наименования, включает количество всего и количество взятых предметов, также обладает категорией (ForeignKey).
TakenItem — описывает взятую вещь, ссылается на Item, обладает количеством и User'ом из стандартного Auth'а.
По моему, тут подходит не "некорректный", а "иллюзия решения", ведь вы скорее в коде напишите "data(n)", а не "data(1), но при этом, оно подставит вместо "data(n)" "datan".