Sly32

Рейтинг
367
Регистрация
29.03.2012

indenger20, спасибо! работает.

---------- Добавлено 04.05.2016 в 23:40 ----------

И тогда, может уже подскажете, как полученное значение передать в форму.

Есть инпут с name="file"

вместо алерта выше делаю так:


var path = $(this).html();
$("input[name='file']").val(path);

Не работает.

Stek:
Но тем не менее у себя в импорте вы читаете с захордкоденого пути и не создаете ни каких связей. На пхп так же можно сделать это в три строки.

Связь создается здесь -


newpost = BlogPost(.... categories_id=5 ... )

Достаточно передать номер категории и Джанго сам создаст связь с нужной таблицей согласно модели

Stek:

По хорошему весь импорт должен делаться в транзакции, а там где у вас "exept: pass" - должен быть откат транзакции, вывод ошибки и окончания действия импорта.

Все верно, уже дописал обработчик ошибок

Stek:

Это уже не говоря о том, что категорию и автора нельзя передавать по id. Их надо извлечь из базы и при отсутствии - создать.

И тут соглашусь. Автора и категорию я могу вообще исключить, потому что они не совпадаю в новой таблице. Мне важно создать json - файл с нужными данными, и уже потом при импорте я просто указываю, в какую категорию писать. Автор в данном случае вообще один только

Спасибо за комментарии

i-work, А мне в таком варианте не нужно по разным таблицам раскидывать. Не нужно для импорта лезть в консоль, могу в админке теперь загрузить json и тут же его импортировать в базу без лишних телодвижений))) все связи сами создадутся

Впрочем на вкус и цвет... Я нашел такое решение, оно меня более чем устраивает.

webjey, Stek, Спасибо за советы, помогло вникнуть в суть.

Но все же решил пойти по пути использования Джанго для этого. Получается универсальный код.

Вот пример, просто чтоб сравнить как все выглядит по сравнению с мусклей или пхп)))


def get_context_data(self, **kwargs):
context = super(ImportView, self).get_context_data(**kwargs)
context['form'] = ImportForm
data = requests.get('http://rentalcar.loc/media/data.json').json()
url = "http://rentalcar.loc/media/test.txt"
for item in data:
newpost = BlogPost(language='ru', title= item['post_title'], slug=item['post_name'], created_at=item['post_date'], content=item['post_content'], announce=item['post_content'][:250], keywords='новости', status='publish', categories_id=8, author_id=1 )
try:
newpost.save()
except:
pass
return context

Stek, Во-первых - не по одной таблице, тут главная сложность. В Вордпрессе данные по категориям храняться в 2-х таблицах, сам пост - в третьей, а тут ещеподумал, что неплохо бы выбрать данные из postmeta - там ссылки на картинки и дополнительные данные. Я собрал их в одну таблицу например, примерно таким запросом:



SELECT `term_taxonomy_id`, `object_id`, `slug`,`post_title`,`post_date`, `post_content`, `post_name`, `meta_key`, `meta_value` FROM `wp_rus_term_relationships`
INNER JOIN `wp_rus_terms`
ON `wp_rus_term_relationships`.`term_taxonomy_id` = `wp_rus_terms`.`term_id`
INNER JOIN `wp_rus_posts`
ON `wp_rus_posts`.`ID`= `wp_rus_term_relationships`.`object_id`
INNER JOIN `wp_rus_postmeta`
ON `wp_rus_term_relationships`.`object_id` = `wp_rus_postmeta`.`post_id` AND `wp_rus_postmeta`.`meta_key` = 'thumb'
WHERE `wp_rus_term_relationships`.`term_taxonomy_id`= 3

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

Но если сможете подсказать правильные запросы для postgres - буду благодарен

---------- Добавлено 01.05.2016 в 21:40 ----------

Stek:
Но при этом на вашу голову ляжет определение типов и их конвертация.

В том и дело что нет - джанга все сама сделает. С разбором хмл и чтением из файла я разобрался, там все изумительно организовано. но , я думаю, вы и сами знаете.

Stek:
Сделать скрипт, подключится к одной базе и писать в другую базу. Тем более, если нужны действия "взять отсюда, создать тут, добавить сюда".

Просто гениальный совет, спасибо... А я все думаю - как???

SQL знания зачаточные совсем. Но за утро разобрался и смог собрать нужные мне данные из трех таблиц в одну, выкинув мусор. Теперь думаю как кошернее дальше.

Есть идея сконвертить данные в ХМЛ или Json и дальше обрабатывать их посредством Джанги. Как я понимаю Json - это уже готовый словарь, который бери о обрабатывай в Питоне?

Left Siska:
Сколько можно безопасно продавать ссылок с сайта? Есть какое то допустимое количество, чтобы не попасть под АГС? Понятно, что это всё индивидуально, зависит от качества площадки, соотношению входящих и исходящих ссылок, кол-ва страниц в индексе и т.п.
Но может всё таки общее "правило"есть, какая нибудь безопасная минималка, чтобы хоть хостинг и домен отбить. Кого за сколько ссылок зафильтровали (зафильтровывали)?

Нет ответа, потому что:

1. Сайт с ТИЦ 10 и около 1000 страниц в индексе, за 10-15 ссылок влетел под самую жесткую версию АГС, пришлось переделывать полностью и письма писать, чтоб амнистировали

2. ТИЦ60 5000 стр в поиске, каталог Яндекса - за 50 ссылок аннулировали ТИЦ, пришлось убирать ссылки, через 20 дней фильтр автоматом снялся

3. ТИЦ 20, 4500 стр. размещено более 200 ссылок - никаких фильтров. В сентябре было влетел под фильтр, через месяц сам вышел,я ничего не делал

Ну не знаю - 24-го написал письмос просьбой проверить сайт на АГС. В этот же день прислали обещание все посмотреть. 25-го прислали ответ, что с сайтов все ок , ждите пару апов до восстановления позиций. А сегодня заметил что АГС уже снят.

Так что жаловаться не могу на ТП Яндекса. Быстро и адекватно ответили.

После ГАС сайт полностью переделывался, менялся контент, движок и тематика. Переезжал на новый IP. Но убрали АГС только после письма Платонам

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

По вашей информации можно долго гадать...

смотрим в top, какие процессы висят. Вспоминаем, какие обновления накатывались...

10 строк хтмля, стока же цсс, 5 строк на js - задержка появления, желательно куки, чтоб не мозолила глаза если отправлено

Ну и обработчик формы + отправка почты -тоже пара строк.

Вот только вчера себе на сайт сделал, правда на Джанге, но принцип одинаковый

Всего: 7118