Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Динамические модели: правильно или нет [RSS Feed]

#1 Июнь 24, 2014 15:53:51

to_night
От: Киев
Зарегистрирован: 2013-12-12
Сообщения: 58
Репутация: +  1  -
Профиль   Отправить e-mail  

Динамические модели: правильно или нет

Добрый день.

Есть словарь, из него на лету создаются модели:

test_dict = {'Ham': [['count', models.IntegerField()]], 'Jam': [['weight', models.IntegerField()], ['manufacture date', models.DateField()]]}
models_list = []
for key, value in test_dict.iteritems():
    #  Models construct.
    models_list.append(type(key, (models.Model,), {'__module__': __name__}))
    for item in value:
        for model in models_list:
            if model.__name__ == key:
                #  Add fields.
                model.add_to_class(item[0], item[1])
                try:
                    admin.site.register(model)
                except AlreadyRegistered:
                    pass

А потом таблицы:

BEGIN;
CREATE TABLE "rooms_and_users_jam" (
    "id" integer NOT NULL PRIMARY KEY,
    "weight" integer NOT NULL,
    "manufacture date" date NOT NULL
)
;
CREATE TABLE "rooms_and_users_ham" (
    "id" integer NOT NULL PRIMARY KEY,
    "count" integer NOT NULL
)
;
COMMIT;

В админке все ок.

Проблема. Мой код выглядит очень простым. Так как раньше ничего подобного не делал, не могу понять, где тут подводные камни. Попинайте.

Офлайн

#2 Июнь 24, 2014 15:57:21

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Динамические модели: правильно или нет

А какова область применения сего?



Офлайн

#3 Июнь 24, 2014 16:17:13

to_night
От: Киев
Зарегистрирован: 2013-12-12
Сообщения: 58
Репутация: +  1  -
Профиль   Отправить e-mail  

Динамические модели: правильно или нет

FishHook
А какова область применения сего?

Сферическая в вакууме. Задача из тестового задания, ставшая уже бояном. Делаю ради интереса (что такое, с чем едят). Просто видел у людей намного более сложные решения сей задачи. Я сделал просто. так как опыта мало, не знаю, насколько правильно.

Динамические модели, как пишут тут: http://www.slideshare.net/schacki/django-dynamic-models20130502, можно использовать, к примеру, для создания пользовательских полей в CMS.

Офлайн

#4 Июнь 24, 2014 16:24:50

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Динамические модели: правильно или нет

to_night
как пишут тут
Там пишут про EAV, а вообще совсем не про то, чтобы создавать классы моделей во время исполнения.
Может быть Вы задание неправильно поняли?



Офлайн

#5 Июнь 24, 2014 16:45:16

to_night
От: Киев
Зарегистрирован: 2013-12-12
Сообщения: 58
Репутация: +  1  -
Профиль   Отправить e-mail  

Динамические модели: правильно или нет

FishHook
Может быть Вы задание неправильно поняли?

Может быть.
1) Приложение должно уметь динамически создавать классы моделей в памяти,
используя текстовое описание моделей (например, из xml (или yaml) файла), должны
поддерживаться типы char, int, date.
2) Таблицы в бд надо создать стандартными средствами django (syncdb), для изменения
необходимо использовать south (в консоли, если модели правильно созданы, то syncdb и
south их подхватывают);
3) Для этих таблиц должно быть доступно редактирование в админке django;

Вроде все так, только я из yaml файла получил словарь.

Офлайн

#6 Июнь 27, 2014 21:42:17

nnmware
Зарегистрирован: 2012-07-21
Сообщения: 133
Репутация: +  13  -
Профиль   Отправить e-mail  

Динамические модели: правильно или нет

Дайте-ка угадаю. Это компания Смит продолжает всех терзать тестовым заданием третий год.
Раньше они на фриланс.ру расписывали как им требуются “питонщики”, но достав весь СНГ, теперь они постят предложения работы на Odesk.
Вы лучше не связывайтесь, а то будет как у меня, сначала они письмо потеряли, потом времени у крутых программеров Смита не было посмотреть, потом еще что-нибудь. А потом им не понравится что они тупят пару недель и теряют письма, и они заявят Вам что код, скопированный из джанго и соуса неопрятен.
Господин Долбунов полностью оправдывает свою фамилию.

А про динамические модели- ловите. https://github.com/nnmware/testwork
Может сделаете более опрятно и глядишь Ваше письмо не прое… потеряют

ЗЫ. Не написал бы это, если бы не столкнулся с таким свинским неуважением к чужому времени и работе. “Письма теряются, времени нет, все говно а мы Дартаньяны”.

ЗЫЗЫ: Касаемо изначальной темы топика- у Вас SQL не создается динамически, а в задании об этом была речь + требуется учитывать миграции, чтобы при изменении данных в yaml файле корректно добавлялись новые поля и удалялись ненужны.

Отредактировано nnmware (Июнь 27, 2014 23:02:00)

Офлайн

#7 Июль 7, 2014 20:55:32

to_night
От: Киев
Зарегистрирован: 2013-12-12
Сообщения: 58
Репутация: +  1  -
Профиль   Отправить e-mail  

Динамические модели: правильно или нет

nnmware
Может сделаете более опрятно и глядишь Ваше письмо не прое… потеряют
Делать в расчете на ‘авось’… ну уж нет. Есть много других полезных задач. А за код спасибо.

Офлайн

#8 Июль 29, 2014 18:02:04

Dolbunov
Зарегистрирован: 2013-01-24
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамические модели: правильно или нет

Здравствуйте nnmware,

Я - Дмитрий Долбунов. Мне сотрудники скинули ссылку, постараюсь ответить на ваши вопросы.

Да, мы компания smyt.ru. Да, мы ищем разработчиков в связи с расширением. Вообще, хороших разработчиков найти сложно, поэтому мы ищем постоянно.

Иногда мы долго отвечаем, т.к. сильно заняты. Я прошу за это прощения у вас. Также я хочу поблагодарить вас за ваше потраченное на нас время.

“Письма теряются, времени нет, все говно а мы Дартаньяны”. - Нет, мы так не думаем. Мне жаль, что так получилось и то, что вы нам не подошли. Просто у нас очень высокие требования к культуре разработки и разработчиков. Также мы не считаем людей, которые делают наше тестовое задание, “говном”, даже если оно сделано неверно.

nnmware, я отправил ссылку своему техдиру на код тестового задания, который лежит у вас в репе. Мы еще раз посмотрим ваш результат и более подробно напишем, почему ваш код показался нам недостаточно качественным.

PS. Да, давно пора придумать новое тестовое задание. ))

Отредактировано Dolbunov (Июль 29, 2014 18:03:49)

Офлайн

#9 Июль 30, 2014 21:49:04

nnmware
Зарегистрирован: 2012-07-21
Сообщения: 133
Репутация: +  13  -
Профиль   Отправить e-mail  

Динамические модели: правильно или нет

По прошествии двух лет с момента выполнения тестового задания мне уже, как и Вам, глубоко безразлично, что там Ваш техдир думает про мой код.
К тому же он не особо и мой, все было основано на http://dynamic-models.readthedocs.org/en/latest/
Разобраться да, пришлось с нуля, бросив все дела, ведь такое красивое задание было “блаблабла, да оно на сообразительность”. Думал ребята серьезные.
А у серьезных ребят полторы недели не было 10 минут глянуть, а потом только и промычали “Ну да..задание верно, но неряшливо, pep8 не соблюден”. Cел как идиот сразу же, 10 часов грохнул коту под хвост, запушил, любопытно что скажут, ведь чай и другие кандидаты делают, сравнить бы подход, скорость. Проблема что пожалел еще 5 минут, чтобы пробелы в нужных местах удалить или добавить. Задание-то не на сообразительность оказалось, а на правописание.
Так что про высокие требования- вон индусам на ODESK рассказывайте, ибо последний месяц вакансия уже раз 15 повторяется, хоть бы убивали старые чтоли для приличия. 15 вакансий, percent hiring - 0.

Всего хорошего.


Офлайн

#10 Июль 30, 2014 22:16:42

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Динамические модели: правильно или нет

Dolbunov
ложь и провокация

Офлайн

  • Начало
  • » Django
  • » Динамические модели: правильно или нет[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version