Этот сайт не наркоманов. Это сайт программистов.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Мы в твиттере!
Мы вконтакте!
Мы на яндексе!

Краснодарское время: 10 Февраль, 2012, 06:39:40

Страниц: 1 [2] 3
Печать
Автор Тема: Django. ManyToMany  (Прочитано 3164 раз)
0 Пользователей и 1 Гость смотрят эту тему.
md5    ↓ 
13 Ноябрь, 2009, 05:40:26
НЕ ХУЕТА! ХУЕТА!

выезд, апартаменты, массаж, стриптиз, подружки, дорого
Группа: в ухо

Карма: не нужна
Сообщений: 10447
Сила слова: 1.2

8===========================================э
Записан

8: Undefined variable: str
Файл: /home/pyha/pyha.ru/forum/bbcode/Xbb/Tags/Man.php
Строка: 18
adw0rd: мудень блять, я уже фиксить стал эту фигню :)
md5: вуахахахаха
Sinkler    ↓ 
14 Ноябрь, 2009, 12:12:07 , спустя 6 часов 31 минуту 41 секунду
НЕ ХУЕТА! ХУЕТА!

Похуй, пляшем!
Группа: Джедаи

Карма: 61
Сообщений: 6097
Сила слова: 1



лично мне переход на питон пока не светит
я в гуглах не работаю и для личных сайтов не нужен
я в гуглах тоже не работаю, но если честно, то на python/django проще программировать, синтаксис более читабелен, голова меньше болит (по себе знаю) и меньше времени тратиться на разработку любого проекта
 
django дарит много вкусностей, не надо по 100 раз писать одно и тоже, объявил какие данные должны быть в модели,
далее структура БД сама сбилдится (можешь сам конечно это сделать ручками, никто не запретит),
потом можешь сгенерировать админку сразу (тоже на свое усмотрение, можешь и свою накидать, как тебе нравится...),
после можешь запросить у модели - форму, в соответствии с типами данных она соберет тебе html-форму, а фильтры дадут возможно отфильтровать что необходимо и т.д.
Спустя 1 минуту 23 секунды добавил
Блин надо десяток статей по этой теме накидать будет.... Народ чувствую жаждит и его терзают вопросы и сомнения )

напомнило мне кейк, только там БД не генерится, а, наоборот, от неё все пляшет...
Записан

adw0rd    ↓ 
14 Ноябрь, 2009, 12:23:05 , спустя 10 минут 58 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: Санитары

Карма: не нужна
Сообщений: 17222
Сила слова: 1.65

phpdude, покажи пример, интересно, может идею какую заюзаю для panjo
Sinkler, покажи пример такого же приложения на CakePHP
Записан

FreeBSD, Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch
Кинсбург * Либург * Футбург * Мой блог
Sinkler    ↓ 
14 Ноябрь, 2009, 12:28:11 , спустя 5 минут 6 секунд
НЕ ХУЕТА! ХУЕТА!

Похуй, пляшем!
Группа: Джедаи

Карма: 61
Сообщений: 6097
Сила слова: 1

adw0rd, у меня есть недоделанный блог с наспехусверстанномговнокодом
Спустя 14 секунд добавил
блог в офлайне
Спустя 3 минуты 8 секунд добавил

Немного про принт в пайтоне:
Python

print 'a'
# 'a'
 
print 'a', 'b'
# 'a b\n'
 
print 'a', 'b',
# 'a b'

это типа если есть запятая, то \n не прописывается, а если нету, то прописывается?
Записан

phpdude    ↓ 
14 Ноябрь, 2009, 12:40:02 , спустя 11 минут 51 секунду
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 339
Сообщений: д-о-х-у-я!
Сила слова: 1.72


phpdude, покажи пример, интересно, может идею какую заюзаю для panjo
Sinkler, покажи пример такого же приложения на CakePHP
ну там тоже конструкторы форм по объекту, очень схожая реалити, только там еще групповые политики на аминистраторов распределяются к примеру и можно админу запретить выполнять например редактирование обэекта, но разрешить создание и удаление =)))
 
ну или например редактироват можно, но нельзя смотреть список )))
 
в общем веселая вещица)
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
Sinkler    ↓ 
14 Ноябрь, 2009, 12:41:27 , спустя 1 минуту 25 секунд
НЕ ХУЕТА! ХУЕТА!

Похуй, пляшем!
Группа: Джедаи

Карма: 61
Сообщений: 6097
Сила слова: 1

да, списки контроля доступа, вроде acl называется... ни разу не использовал =)
Записан

adw0rd    ↓ 
14 Ноябрь, 2009, 12:53:04 , спустя 11 минут 37 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: Санитары

Карма: не нужна
Сообщений: 17222
Сила слова: 1.65

phpdude, Sinkler, да, это охуенно, так примеры будут?
Спустя 47 секунд добавил
это типа если есть запятая, то \n не прописывается, а если нету, то прописывается?
Да, но все это ты сможешь сам переопределить, если захочешь... меня например это устраивает
Записан

FreeBSD, Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch
Кинсбург * Либург * Футбург * Мой блог
Sinkler    ↓ 
14 Ноябрь, 2009, 01:14:12 , спустя 21 минуту 8 секунд
НЕ ХУЕТА! ХУЕТА!

Похуй, пляшем!
Группа: Джедаи

Карма: 61
Сообщений: 6097
Сила слова: 1

краткий мануал о списках контроля доступа (для старой версии 1.1, в 1.2 практически то же самое). на мой взгляд, это самое сложное в кейке.
Записан

adw0rd    ↓ 
14 Ноябрь, 2009, 02:24:18 , спустя 1 час 10 минут 6 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: Санитары

Карма: не нужна
Сообщений: 17222
Сила слова: 1.65

Мне примеры вот такого приложения на ваших предложенных фреймворках:
 

Про связи в таблицах 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})
 

Ну а дальше остается только шаблоны наклепать и все... Увас теперь есть блог :)

Мне просто интересно посмотреть, ибо я сам реализовываю на PHP фреймворк похожий на Django
« Последнее редактирование: 14 Ноябрь, 2009, 02:24:18 от adw0rd » Записан

FreeBSD, Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch
Кинсбург * Либург * Футбург * Мой блог
Sinkler    ↓ 
14 Ноябрь, 2009, 01:52:36 , спустя
НЕ ХУЕТА! ХУЕТА!

Похуй, пляшем!
Группа: Джедаи

Карма: 61
Сообщений: 6097
Сила слова: 1

Пример для кейка со связью 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:
 
PHP
<?
$post = $this->Post->read(null, '2');
print_r($post);
?>

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 секунд добавил
=)
Записан

adw0rd    ↓ 
14 Ноябрь, 2009, 02:06:46 , спустя 14 минут 10 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: Санитары

Карма: не нужна
Сообщений: 17222
Сила слова: 1.65

Sinkler, тебе самому не кажется что у меня попроще в разы?)
Записан

FreeBSD, Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch
Кинсбург * Либург * Футбург * Мой блог
Sinkler    ↓ 
14 Ноябрь, 2009, 02:10:39 , спустя 3 минуты 53 секунды
НЕ ХУЕТА! ХУЕТА!

Похуй, пляшем!
Группа: Джедаи

Карма: 61
Сообщений: 6097
Сила слова: 1


Sinkler, тебе самому не кажется что у меня попроще в разы?)
да мне не кажется, я уже давно понял =)
 
кейк вобще тяжел...
 
но до питона не знаю когда доберусь, в ближайших планах в общих чертах джаву изучить и более-менее си шарп
Записан

adw0rd    ↓ 
14 Ноябрь, 2009, 02:25:33 , спустя 14 минут 54 секунды
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: Санитары

Карма: не нужна
Сообщений: 17222
Сила слова: 1.65

В продолжение темы ManyToMany для джанги http://habrahabr.ru/blogs/django/74967/
Записан

FreeBSD, Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch
Кинсбург * Либург * Футбург * Мой блог
adw0rd    ↓ 
14 Ноябрь, 2009, 01:18:50 , спустя 10 часов 53 минуты 17 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: Санитары

Карма: не нужна
Сообщений: 17222
Сила слова: 1.65

Причины выбора Django для разработки сайта
Записан

FreeBSD, Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch
Кинсбург * Либург * Футбург * Мой блог
krasun    ↓ 
14 Ноябрь, 2009, 02:13:45 , спустя 54 минуты 55 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Джедаи
Группа: Джедаи

Карма: 41
Сообщений: 1378
Сила слова: 2.98

после Haskell, обязательно попробую python
Записан
Страниц: 1 [2] 3
Печать
 

Перейти в: