|
Название: Django. ManyToMany Отправлено: adw0rd от 14 Ноябрь, 2009, 02:24:55 Про связи в таблицах ManyToMany:
Например у нас есть приложение блог: Python
class Post(models.Model): title = model.CharField(max_length=100) body = model.TextFileld() class Tag(models.Model): title = model.CharField(max_length=30) url = model.CharField(max_length=10) post = model.ManyToManyField(Post) А во вьхе вот так выбираем все записи с определенным тегом: Python def showPostByTag(self, url): try: posts = Post.objects.filter(tag__url=url) except Post.DoesNotExist: raise Http404 return render_to_response('list.html', {"posts": posts}) Ну а дальше остается только шаблоны наклепать и все... Увас теперь есть блог :) Спустя 1 минуту 24 секунды добавил 1. Из нормальных - все уг, назови те, которые могут составлять конкуренцию 2. Нормальный фреймворк бы получился, если бы язык был тоже нормальным Название: Django. ManyToMany Отправлено: NRG от 13 Ноябрь, 2009, 04:31:34 adw0rd, ты реально написал функционал который есть в симфони.
я уверен что в других фреймворках он тоже есть... точно так же в симфони описывается схема, на основании которой и админка генерится и формы.... просто там это не в самом коде пхп , а вотдельных файлах типа schema.yml . ну и естессно там синтакс YAML Название: Django. ManyToMany Отправлено: adw0rd от 13 Ноябрь, 2009, 04:42:23 А зачем там YML? Думаю из-за скудности самого PHP? Спустя 1 минуту 2 секунды добавил http://larin.in/archives/59 Спустя 4 минуты 13 секунд добавил http://www.alrond.com/ru/2007/jan/25/rezultaty-testirovanija-6-frameworks/ Спустя 3 минуты 53 секунды добавил а что там ставить то? cd /usr/ports/lang/python make install clean Название: Django. ManyToMany Отправлено: NRG от 13 Ноябрь, 2009, 04:48:54 А зачем там YML? Думаю из-за скудности самого PHP?не говори глупости. ямл туда впиздячили не по техническим причинам, хотя можно было смело и без него. я конечно исренне за тебя рад что ты перешел на питон и он тебе очень нравится. но на пхп можно делать достаточно много красивых и хороших вещей, просто надо чтоб были мозги и ровные руки. пхп не совершенен, впрочем как и все в этом мире. да, в нем есть баги, но а где их нету ? Название: Django. ManyToMany Отправлено: adw0rd от 13 Ноябрь, 2009, 04:51:46 ясно, спорить не буду
Спустя 1 минуту 56 секунд добавил NRG, не, немогу молчать... объясни мне зачем там ямл, если можно было сделать сразу в классах модели?или покажи мне тоже самое приложение, но на симфони (шаблоны блога можешь не показывать) Название: Django. ManyToMany Отправлено: md5 от 13 Ноябрь, 2009, 04:56:51 ты меня еще поучи ))) я же сверхъестественный супер специалист по фрибздэ Название: Django. ManyToMany Отправлено: adw0rd от 13 Ноябрь, 2009, 04:59:50 md5, ну вот я и испугался ) думал тебя тоже поломали )
Название: Django. ManyToMany Отправлено: md5 от 13 Ноябрь, 2009, 05:01:17 всмысле тоже? кого поломали? ) Название: Django. ManyToMany Отправлено: adw0rd от 13 Ноябрь, 2009, 05:04:09 md5, да это просто такое выражение )
Название: Django. ManyToMany Отправлено: NRG от 13 Ноябрь, 2009, 05:16:52 NRG, не, немогу молчать... объясни мне зачем там ямл, если можно было сделать сразу в классах модели?adw0rd, я же говорю, можно было смело без него. или покажи мне тоже самое приложение, но на симфони (шаблоны блога можешь не показывать)сори, но не покажу, так как проектов на симфони у меня сейчас нету, а к тем которые я делал нету доступа. Там в ихней доке(симфони) кажется были примеры какието, где описывается эта шняга... и я не говорю что питон или джанга хуйня, наоброт очень хорошие вещи. просто фразы типа: -скудность пхп -нормальные вещи пишутся только на нормальных языках -все уг как-то меня выводят и заставляют грубо на них отвечать. отвечать я тебе грубо не хочу, так как вместе прожили на этом форуме не один год. просто такая реакция у многих кто переходит на другую техноголоию. типа : "у меня полный рот адуванчиков, а вы все лохи сидите и ебитесь на свое недодроченом пехапе.." адворд, не становись таким =) Название: Django. ManyToMany Отправлено: adw0rd от 13 Ноябрь, 2009, 05:23:11 сори, но не покажу, так как проектов на симфони у меня сейчас нету, а к тем которые я делал нету доступа.у меня тоже нет проекта блога на джанге, я его составил прямо сейчас, набивая пост.... раз ты говоришь что симфони тоже очень удобен - то покажи это так, как сделал я Спустя 55 секунд добавил как-то меня выводят и заставляют грубо на них отвечать.♥ Спустя 2 минуты 12 секунд добавил просто такая реакция у многих кто переходит на другую техноголоию.честное слово, полгода назад я тоже воспринимал это как и ты, когда говорили "хахаха, пхп это вообще пиздец и недоязык" - то я тоже возмущался, а потом попробовал пайтон и понял что по сути они отчасти правы.... пиэйчпи это конечно язык, которому не один год, однако в нем концепции заложенные не удовлетворяют текущим тенденциям уже как пару лет он действительно недоязык, к сожалению Название: Django. ManyToMany Отправлено: NRG от 13 Ноябрь, 2009, 05:23:42 у меня тоже нет проекта блога на джанге, я его составил прямо сейчас, набивая пост.... раз ты говоришь что симфони тоже очень удобен - то покажи это так, как сделал яок, но только на досуге, а то я щас на работе и времени на это тут нету =) Название: Django. ManyToMany Отправлено: md5 от 13 Ноябрь, 2009, 05:25:07 ну да, ссыкло, а изпиздеть весь форум флудом у него время есть ))
получил хуй — не уворачивайся! Название: Django. ManyToMany Отправлено: adw0rd от 13 Ноябрь, 2009, 05:26:37 Я сам продолжаю программировать на PHP, делаю движок для сателитов-магазинов, то есть морда на PHP и их очень много и ее ставят "сеошники" и прочие недопрограммисты
А на пайтоне реализовываю центральную часть приложения (бекенд), который рассылает апдейты для продукции Название: Django. ManyToMany Отправлено: NRG от 13 Ноябрь, 2009, 05:28:42 ладно, давай сюда хуй =) Название: Django. ManyToMany Отправлено: md5 от 13 Ноябрь, 2009, 05:40:26 8===========================================э
Название: Django. ManyToMany Отправлено: Sinkler от 14 Ноябрь, 2009, 12:12:07
напомнило мне кейк, только там БД не генерится, а, наоборот, от неё все пляшет... Название: Django. ManyToMany Отправлено: adw0rd от 14 Ноябрь, 2009, 12:23:05 phpdude, покажи пример, интересно, может идею какую заюзаю для panjo
Sinkler, покажи пример такого же приложения на CakePHP Название: Django. ManyToMany Отправлено: Sinkler от 14 Ноябрь, 2009, 12:28:11 adw0rd, у меня есть недоделанный блог с наспехусверстанномговнокодом
Спустя 14 секунд добавил блог в офлайне Спустя 3 минуты 8 секунд добавил
это типа если есть запятая, то \n не прописывается, а если нету, то прописывается? Название: Django. ManyToMany Отправлено: phpdude от 14 Ноябрь, 2009, 12:40:02 ну там тоже конструкторы форм по объекту, очень схожая реалити, только там еще групповые политики на аминистраторов распределяются к примеру и можно админу запретить выполнять например редактирование обэекта, но разрешить создание и удаление =))) ну или например редактироват можно, но нельзя смотреть список ))) в общем веселая вещица) Название: Django. ManyToMany Отправлено: Sinkler от 14 Ноябрь, 2009, 12:41:27 да, списки контроля доступа, вроде acl называется... ни разу не использовал =)
Название: Django. ManyToMany Отправлено: adw0rd от 14 Ноябрь, 2009, 12:53:04 phpdude, Sinkler, да, это охуенно, так примеры будут?
Спустя 47 секунд добавил это типа если есть запятая, то \n не прописывается, а если нету, то прописывается?Да, но все это ты сможешь сам переопределить, если захочешь... меня например это устраивает Название: Django. ManyToMany Отправлено: Sinkler от 14 Ноябрь, 2009, 01:14:12 краткий мануал о списках контроля доступа (для старой версии 1.1, в 1.2 практически то же самое). на мой взгляд, это самое сложное в кейке.
Название: Django. ManyToMany Отправлено: adw0rd от 14 Ноябрь, 2009, 02:24:18 Мне примеры вот такого приложения на ваших предложенных фреймворках:
Мне просто интересно посмотреть, ибо я сам реализовываю на PHP фреймворк похожий на Django Название: Django. ManyToMany Отправлено: Sinkler от 14 Ноябрь, 2009, 01:52:36 Пример для кейка со связью hasAndBelongsToMany (или ManyToMany, как у эдво).
Есть блог. Так как все пляшет от базы данных, то сделаем три таблицы. Для постов, для тегов и дополнительную для связи постов с тегами. SQL ---- Table structure for table `posts` -- CREATE TABLE `posts` ( `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `user_id` int(10) DEFAULT NULL, `title` varchar(50) DEFAULT NULL, `body` text, `created` datetime DEFAULT NULL, `modified` datetime DEFAULT NULL, `status` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) TYPE=MyISAM; -- -------------------------------------------------------- -- -- Table structure for table `posts_tags` -- CREATE TABLE `posts_tags` ( `post_id` int(10) UNSIGNED NOT NULL DEFAULT '0', `tag_id` int(10) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`post_id`,`tag_id`) ) TYPE=MyISAM; -- -------------------------------------------------------- -- -- Table structure for table `tags` -- CREATE TABLE `tags` ( `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `tag` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`) ) TYPE=MyISAM; Дальше объявим в модели Post ассоциацию с моделью Tag PHP <?php class Post extends AppModel { var $name = 'Post'; /* тут филды могут быть. а могут и не быть */ var $hasAndBelongsToMany = array('Tag' => array('className' => 'Tag', 'joinTable' => 'posts_tags', 'foreignKey' => 'post_id', 'associationForeignKey'=> 'tag_id', 'conditions' => '', 'order' => '', 'limit' => '', 'unique' => true, 'finderQuery' => '', 'deleteQuery' => '', ) ); } ?> Теперь выполняя find() или findAll() запросы в контролере, используя модель Post, мы должны увидеть также ассоциированную модель Tag: Text Array( [Post] => Array ( [id] => 2 [user_id] => 25 [title] => Cake Model Associations [body] => Time saving, easy, and powerful. [created] => 2006-04-15 09:33:24 [modified] => 2006-04-15 09:33:24 [status] => 1 ) [Tag] => Array ( [0] => Array ( [id] => 247 [tag] => CakePHP ) [1] => Array ( [id] => 256 [tag] => Powerful Software ) ) ) Спустя 3 минуты 48 секунд добавил если делать выборку, используя модель Tag, и установить recursive в значение 1, то с тегами будут выбираться так же и посты Спустя 28 секунд добавил пример взят из официальной кукбук Спустя 18 секунд добавил опять же, старая версия 1.1 Спустя 1 минуту 2 секунды добавил как-то так Спустя 12 секунд добавил =)Название: Django. ManyToMany Отправлено: adw0rd от 14 Ноябрь, 2009, 02:06:46 Sinkler, тебе самому не кажется что у меня попроще в разы?)
Название: Django. ManyToMany Отправлено: Sinkler от 14 Ноябрь, 2009, 02:10:39 да мне не кажется, я уже давно понял =) кейк вобще тяжел... но до питона не знаю когда доберусь, в ближайших планах в общих чертах джаву изучить и более-менее си шарп Название: Django. ManyToMany Отправлено: adw0rd от 14 Ноябрь, 2009, 02:25:33 В продолжение темы ManyToMany для джанги http://habrahabr.ru/blogs/django/74967/
Название: Django. ManyToMany Отправлено: adw0rd от 14 Ноябрь, 2009, 01:18:50 Название: Django. ManyToMany Отправлено: krasun от 14 Ноябрь, 2009, 02:13:45 после Haskell, обязательно попробую python
Название: Django. ManyToMany Отправлено: adw0rd от 18 Ноябрь, 2009, 08:44:11 1. NRG где пример?
2. NRG где SQL-beautifier? |