Форум сайта python.su
0
Добрый день! Есть модель джанго - http://pastebin.com/print/g2NxcdzY . Поле position отражает позицию элемента на странице. Есть ли какая-либо возможность сделать это поле изменяемым через админку, автоинкримент по умолчанию должен сохраниться.
Офлайн
61
А почему бы не сделать его обычным полем просто добавить
primary_key
Field.primary_key
If True, this field is the primary key for the model.
If you don’t specify primary_key=True for any field in your model, Django will automatically add an AutoField to hold the primary key, so you don’t need to set primary_key=True on any of your fields unless you want to override the default primary-key behavior. For more, see Automatic primary key fields.
primary_key=True implies null=False and unique=True. Only one primary key is allowed on an object.
The primary key field is read-only. If you change the value of the primary key on an existing object and then save it, a new object will be created alongside the old one.
Офлайн
0
ZerGПотому что должен быть автоинкремент для поля position, при добавлении нового объекта. Если есть возможность добавить автоинкремент не в primary_key поле, я буду только за. Но ума не приложу как это сделать
А почему бы не сделать его обычным полем просто добавить
Офлайн
568
dmitry_sulin
Скажите, но почему по-вашему Id не отражает позицию записи в списке? Это же тупо автоикрементный интеджер, то есть ровно то, что вам надо и оно есть в каждой модели по дефолту.
Офлайн
0
FishHookПотому что id нельзя вручную изменять через админку. Это нужно иногда для особого порядка расположения элементов на странице. Но чаще всего достаточно того расположения, которое “выдает” автоинкремен
dmitry_sulinСкажите, но почему по-вашему Id не отражает позицию записи в списке? Это же тупо автоикрементный интеджер, то есть ровно то, что вам надо и оно есть в каждой модели по дефолту.
Офлайн
568
Ну ок, заведите еще одно AutoField поле, http://djbook.ru/rel1.7/ref/models/fields.html#autofield.
Надеюсь, вы понимаете, что при удалении записей из таблицы счетчик автоикремента не сбрасывается? Через какое-то время вы получите таблицу из десяти записей, с номерами записей типа 234234, 939202: который к тому же идут с большими пропусками? Я думаю ваш бухгалтер будет долго репу чесать, что это за фигня. Если у вас информации не много и она не часто изменяется, может лучше save и delete у модели переопределить и скриптом/запросом (пусть даже будет много запросов) выставлять нормальную нумерацию?
Офлайн
0
FishHookСпасибо! Там все таки решили добавлять все порядковые номера (номер расположения на странице, не id) вручную. Правда теперь я не могу сделать миграции. Поле с AutoField уже удалил, а при миграции пишет: “A model can't have more than one AutoField”
Ну ок, заведите еще одно AutoField поле, http://djbook.ru/rel1.7/ref/models/fields.html#autofield. Надеюсь, вы понимаете, что при удалении записей из таблицы счетчик автоикремента не сбрасывается? Через какое-то время вы получите таблицу из десяти записей, с номерами записей типа 234234, 939202: который к тому же идут с большими пропусками? Я думаю ваш бухгалтер будет долго репу чесать, что это за фигня. Если у вас информации не много и она не часто изменяется, может лучше save и delete у модели переопределить и скриптом/запросом (пусть даже будет много запросов) выставлять нормальную нумерацию?
Офлайн