Найти - Пользователи
Полная версия: Порядок полей в модели и базе данных
Начало » Django » Порядок полей в модели и базе данных
1 2
oleg.p
Заметил одну особенность работы Django с бд:

Если имеется модель:
class Units(models.Model):
status = models.PositiveSmallIntegerField(default=0)
name = models.CharField(max_length=64)
price = models.IntegerField(default=0)

То после миграции в базу порядок расположения полей будет другой:
name
price
status

Фактически, Django выстроил их так: вначале текстовые поля, затем числовые в порядке уменьшения разрядности.

Кто-нибудь знает, на чём основана такая логика работы?
Есть ли возможность запретить Django менять порядок полей в базе?
FishHook
oleg.p
А какой для вас смысл имеет порядок полей в БД?
oleg.p
FishHook
oleg.pА какой для вас смысл имеет порядок полей в БД?

Вышеобозначенная модель исключительно для примера. В реальной базе в таблицах количество полей достигает нескольких десятков, и отрабатывать sql-запросы существенно проще, когда чередование полей основано на логике, а не на прихотях фреймворка.
FishHook
oleg.p
и отрабатывать sql-запросы существенно проще, когда чередование полей основано на логике, а не на прихотях фреймворка.
В смысле “проще отрабатывать запросы”, потрудитесь выражать свои мысли яснее.
oleg.p
FishHook

Через консоль базы данных
FishHook
oleg.p
Через консоль базы данных
Что “через консоль базы данных”?

Слушайте, мы в первом классе что ли? Вы можете четко формулировать свои посты?
oleg.p
FishHook
Что “через консоль базы данных”?

Слушайте, мы в первом классе что ли? Вы можете четко формулировать свои посты?

Если не можете понять, для чего нужно, то тогда ответ простой: потому что надо - это самая четкая формулировка в данном случае.

И давайте не будем разводить флуд и вернемся к самому вопросу:
Есть ли возможность запретить Django менять порядок полей в базе при создании таблиц?
FishHook
oleg.p
потому что надо
Это не ответ на вопрос на техническом форуме.
СУБД не гарантируют возврат столбцов в каком бы то ни было порядке. Все запросы на изменение данных имеют не позиционную структуру, а именованную. В селектах возвращаемые столбцы и их порядок указываются явно.







Я прошу дать пример, когда вам нужен порядок столбцов.

ПС
Если вы чего-то не знаете и не умеете, ваша задача научиться и разобраться, а не вставать в позицию “я хочу и все тут”, с такими требованиями идите к черту, вам никто ничего не должен.
oleg.p
FishHook
FishHook
Я прошу дать пример, когда вам нужен порядок столбцов.

Когда работаешь через консоль с таблицами с большим количеством полей (20 и выше), совершенно неудобно, когда поля идут в хаотическом порядке.

В качестве примера можно взять любую медицинскую базу данных, где в таблице параметры человека:
ид, имя, фамилия, год, вес, рост, размер глаза, цвет глаз, размер мошонки, …

Открываем консоль (для тех, кто не понял, в командной строке вводим mysql, psql и т.п),
затем: select * from people;
Теперь если поля прописаны грамотно, то получишь красивую табличку.
А теперь представьте вид таблицы, если поля перемешать? Очень грустно видеть имя, затем размер мошонки, потом размер глаз, затем фамилию…
Некоторые могут сказать: перечисли нужные поля вместо *… но опять обращаю внимание - речь от больших таблицах, и перечислять поля заколебёшься.
JOHN_16
oleg.p
Кто-нибудь знает, на чём основана такая логика работы?
обязательно знает, думаю Вы и сами сможете узнать, исходники открыты и доступны
oleg.p
Есть ли возможность запретить Django менять порядок полей в базе?
Думаю нет.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB