Home
15 Июль 2009 @ 12:02
Есть
class PlaceTag(models.Model):
    value = models.CharField(max_length = 128, unique = True)

class Publication(models.Model):
    pass

class Issue(models.Model):
    publication = models.ForeignKey(Publication)
    place_tags = models.ManyToManyField(PlaceTag, through='Place')

class Place(models.Model):
    issue = models.ForeignKey(Issue)
    weight = models.IntegerField()
    tag = models.ForeignKey(PlaceTag)
    class Meta:
        unique_together = ('issue', 'tag')

хочется для Publicaton доставать Places с максимальным весом.
сейчас решил . Можно ли это сделать используя ORM?
 
 
Опубликовал свой опыт и соображения по теме, возможно будет кому-то интересно и полезно почитать
оригинал статьи

Комментарии приветствуются.
 
 
27 Июнь 2009 @ 01:00
Кто нибудь пробовал создавать схему URL, содержащую юникодовские (в частности кириллические) символы в оной? Просто в ситуации, когда для доступа к объекту осуществляется не по айдишке, а по значению текстового поля в урлах, для латиницы все работает отлично, а вот для юникода - хрен.

Сами урлы в шаблоне пропущены через фильтр iriencode, то есть я достоверно уверен, что все юникодные урлы приведены в привычный вид %D1%81%D1%82%D0%B0%D1%82%D1%8C%D1%8F, соответственно для парсинга подобного урла в регэксп нужно просто добавить [0-9A-F%]. Однако при попытке доступа к подобным образом сформированной странице стабильно получаю Page not found (404). Пробовал экранировать процент, пробовал разрешать вообще все символы латиницы верхнего регистра, пробовал писать в регэксп символы кириллицы - безуспешно.

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

Есть соображения?
 
 
Уже есть хостинг, хочу хостить там проекты, на django.
Python там есть, также поддержка говорит
mod_python установлен - через него работают все .py скрипты.

Я могу линковать домен к какой либо директории в домешнем каталоге.
Доступа к httpd.conf нету, но могу править .htaccess

Возможно ли настроить django на таком хостинге?

UPD:
Но я всё-таки настроил!
.htaccess

Options ExecCGI
SetHandler wsgi-script
AddHandler wsgi-script .wsgi
Options +FollowSymLinks

[Error: Irreparable invalid markup ('<ifmodule mod_rewrite.c>') in entry. Owner must fix manually. Raw contents below.]

Уже есть хостинг, хочу хостить там проекты, на django.
Python там есть, также поддержка говорит
<blockquote>mod_python установлен - через него работают все .py скрипты.</blockquote>
Я могу линковать домен к какой либо директории в домешнем каталоге.
Доступа к httpd.conf нету, но могу править .htaccess

Возможно ли настроить django на таком хостинге?

UPD:
Но я всё-таки настроил!
.htaccess

Options ExecCGI
SetHandler wsgi-script
AddHandler wsgi-script .wsgi
Options +FollowSymLinks

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /django.wsgi/$1 [QSA,PT,L]
</IfModule>

На папку ot настроен домен o.17slonov.ru
~/ot/public_html/django.wsgi
import os, sys
sys.path.append('/home/r/ruslon/django/src/Django-1.0.2-final')
sys.path.append('/home/r/ruslon/django/projects')
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
 
 
Изначально проблема возникла при работе с формами, когда мне требовалось указать autocomplete-виджету url, по которому ему обращаться. url хотелось получать с помощью reverse. А модуль с формами я импортировал из модуля со вьюхами. Как следствие, reverse () выполнялся очень рано (при загрузке forms.py, который загружался из views.py, который загружался в процессе обработки urls.py), то есть до того, как закончен анализ всех urlconf. Естественно, reverse не работал.
Read more... )
Наверное, ещё разумнее импортировать класс из forms.py не в начале views.py, а перед использованием, т.е. уже в теле функции-вьюхи, чтобы при импорте views.py не импортировать заодно и формы.

А какие-нибудь ещё разумные решения у кого-нибудь есть?

UPD: Пока лучшее решение, как мне кажется, -- не импортировать forms.py в глобальное пространство views.py, только внутри функций, в которых это надо.
 
 
Хочу сделать на флексе виджет позволяющий ставить точки на картинке. С клиентской стороны это эдакая "инфографика": жмешь на какую-то точку большой картинки и открывается маленькая с текстиком. А вот со стороны админки мысли такие:

class Infograf(models.Model):
file = models.ImageField(u'Основная иллюсрация')
swf = models.TextField(u'Установка точек')

Сами точки будут храниться в качестве дочерних объектов:

class InfografPhoto(models.Model):
infograf = models.ForeignKey(Infograf, related_name = 'photos')
coodrs = models.CommaSeparatedIntegerField(u'Координаты', max_length = 7)

админка одна - только на Infograf в ней инлайном подключены InfografPhoto

в Infograf.swf я бы хотел хранить готовый для отдачи посетителю кусок html'я со всей этой лабудой, html будет создавать Infograf.save(). Редактору сайта понятно дело смотреть на содержимое Infograf.swf нафиг не нужно, поэтому там собственно и будет виджет.

InfografPhoto.coodrs в форме я собираюсь объявить hidden'ом и заполнять его с помощью js, который будет вызываться из собственно виджета. Но беда в том, что на этом самом виджете нужно нарисовать уже существующие точки информацию о которых ему нужно передать ну и информация о Infograf.file ему тоже как бы нужна.

таким образом виджет прикрученный к полю формы созданной по модели должен получить из метода render() доступ к свойствам инстанса: myinfograf.file и myinfograf.photos

как это сделать?
ну как сама идея? или плюнуть на админку и сделать отдельную вьюшку?

PS: извините за некоторую путаность изложения, надеюсь на ваши телепатические навыки :)
PSS: админку 1.1 еще не видел, о новинках не знаю, возможности использовать не имею.
 
 
02 Июнь 2009 @ 13:32
Я тут в wikibooks накатал меленький how-to разворачивание Django на серваке.
Типа юзайте на здоровье, а если ещё что-нить добавите и/или исправите ваще хорошо.
 
 
06 Май 2009 @ 13:23
Долго врубался в шаблон MVC, смотрел на примере других языков (например JSP), короче изучение Django давалось трудно и ещё в перемешку с Google App Engine. Потом прочёл в переводе документации:
  • Файл models.py описывает таблицу базы данных.
  • Файл views.py описывает логику приложения.
  • Файл urls.py описывает соответствие URL логике приложения.
  • Файл latest_books.html описывает HTML шаблон, используемый при выводе страницы.
и стало понятно .. а общие слова <em>модель, представление, контроллер </em> для меня какие-то абстрактные.
 
 
05 Май 2009 @ 14:00
Добрый день! Хочу научится работать с Джангой, но не знаю с чего начать.
С англиским туго, руской документации по 1.0 еще нет:(
Нуждаюсь в кураторе, который бы давал задания и исправлял если что.
Исполню любую роботу (по теме).
Писать в коменты к этому посту или на имейл
vasylko.pupkin@gmail.com
С уважением Роман Долюк.
 
 
30 Апрель 2009 @ 15:12
И вот еще в догонку. Допустим у нас есть o2m поле "тип". Типов этих всего 3 шт. (ну допустим агрегатное состояние вещества).
Что есть в джанге для этого?
TYPES = ((1, 'Жидкое'),(2,'Твёрдое'),(3,'Газообразное'))
...
type = models.PositiveIntegerField('Агрегатное состояние', choices=TYPES)


Всё. Оч. удобно.
А хотелось бы тот же самый вариант, только для m2m. Т.е. перечислить возможные TYPES константами и как категории (тэги) и присваивать их объекту 1, 2 или все сразу (и чтобы поле в форме "checkbox" было). И чтобы в базу при этом не лезло.
А поле в бд - пусть там CSV строка будет.

Кто-нить на всяких сниппетах не видел ничего подобного?
 
 
30 Апрель 2009 @ 14:40
Допустим есть у меня в моделях есть Письмо.
И у письма есть m2m поля "От" и "Кому":

class Письмо(models.Model):
    От = models.ManyToMany(Люди)
    Кому = models.ManyToMany(Люди)


Теперь мне на странице, надо нарисовать список писем таблицей, и к каждому пририсовать от кого оно и кому:

{% for p in Письма %}
    <tr>
            <td>  {{ p.От.all()|join:"," }}  </td>
            <td>  {{ p.Кому.all()|join:"," }}  </td>
    </tr>
{% endfor  %}



Так вот в этот момент, на каждое вот это вот p.От.all() джанга фигачит запрос к серверу.
И получается, что для того, чтобы вывести этот список, в сервер улетает N*2 запросов, где N - кол-во строк в списке.

Для 50-строчной таблицы в сервер улетает 100 запросов.

Как вообще с подобными косяками бороться, короме как плодить "избыточность данных" в модели Писем?
Наверняка же есть паттерны готовые?
 
 
Больше месяца уже копаю django
Пока все очень нравится

Но вот никак не могу найти как реализовать форму редактирования существущего объекта из базы

Условный кодRead more... )
 
 
Приветствую.

Не могу решить вот такую головоломку. Точнее могу, но не могу найти наиболее изящный метод.
Собственно, описание проблемы )
 
 
22 Апрель 2009 @ 11:40
Есть какой-то вариант сделать форин-кей на модель описанную ниже по тексту?
class A(models.Model): 
    b = models.ForeignKey(B)   

class B(models.Model):     
    a = models.ForeignKey(A) 

А то не даёт, в красном месте говорит класса B нету.
 
 

Обязанности:

  • Разработка прикладного ПО на Python с использованием XML и JS


Требования:

  • опыт работы — от 1 года,
  • знание языка Python — от полугода,

  • желательно - SQL, XML, JS, XUL, Linux,

  • английский - технический уровень (чтение документации)


Условия:

  • оформление в соотствии с ТК РФ,
  • расположение офиса - м. Коньково / м. Юго - Западная,
  • заработная плата - оклад - от 60000 рублей net,
  • хороший коллектив
Резюме направляйте, пожалуйста, на адрес rosenergo_msk  ()  mail.ru для Елены
 
 
11 Апрель 2009 @ 09:59
Покритикуйте пожалуйста код для schema-less моделей (там пока еще только начало, но уже понятно как оно будет работать): http://dpaste.com/hold/31803/

Идея состояла в том, чтобы дать возможность работать с новыми моделями также как и со стандартными моделями в Django (естественно, не весь функционал, а базовые вещи - filter/exclude/get/save/delete). Надо будет еще сделать так, чтобы формы могли работать с этими моделями. Что-то еще?
 
 
Мы с коллегой по проекту ищем дельного специалиста, работающего на django и имеющего опыт разработки проектов с серьёзным функционалом на нём (или гения разработки на python, желающего изучить django в процессе работы над нашим проектом). Знание AJAX, умение грамотно верстать - крайне приветствуется. Важно найти не просто кодера-программиста, но разработчика, способного соучаствовать в разработке проекта.

Коротко о нас: мы - два студента МГК им. Чайковского, я занимаюсь созданием сайтов, крупных и мелких - путем найма фриланс-сотрудников. Мой профиль на фрилансе - http://www.free-lance.ru/users/ru_master/ - см. отзывы. Совсем недавно закончилась работа над моим проектом Symbolique - http://symbolique.ru - в ближайшие дни заполню сайт проектами. Мой коллега - коллекционер нот и записей классической музыки и джаза. У нас есть желание создать проект, который поможет нам и нашим коллегам в поиске того или иного материала, связанного с классической музыкой и джазом, а также поиске работы, продаже/покупке инструмента, поиске концертмейстера, выбора концерта, на который сходить, и пр. Ну и удобного общения между людьми со схожими интересами.

Это не тупое копирование вКонтакте "для музыкантов": аналогов некоторых наших разработок мы до сих пор не смогли найти в интернете. За дизайн проекта взялся гениальный специалист - Павел Пеканов (http://pekanov.com).

Сайт проекта: http://pianoclub.ru ТЗ проекта в процессе разработки (описаны еще не все модули, нет четкого ТЗ по админке). Есть утвержденный логотип проекта, дизайн личной страницы пользователя (почти утвержденный за некоторыми нюансами).
Оплата.

Вряд ли я смогу предложить супер-сладкие 100%-адекватные условия, на которые слетятся лучшие джанго-программисты столицы (ибо деньги из нашего кармана). Но стремиться к адекватной оплате труда я буду. 30.000 р., которые выделены на бета-версию, отложены и ждут своего хозяина. Все средства сверх этой суммы будут обсуждены непосредственно с заинтересованными специалистами путем переписки, звонка или личной встречи. После бета-версии есть большая вероятность, что у проекта появится инвестор.

Готовы встретиться лично и обсудить все детали проекта.

Тел. +79262444304 ICQ 537173 e-mail: simvolik(СОБАКА)gmail.com
Ну и готов, конечно же, обсудить всё это безобразие в комментах.

 
 
Current Location: Москва
Настроение: джанговое
Музыка: джанговая
 
 
24 Март 2009 @ 10:25
Покритикуйте метод.

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

Хотелось бы с одной стороны более-менее универсального решения, с другой - удобного. Я не DBA, но с базами данных работаю не первый год. Придумалось вот такое решение.
многабукаф )
 
 
20 Март 2009 @ 17:41
Начал работу над переводом второй части DjangoBook. Первая глава уже выложена на сайт.

Я особо не надеюсь, что кто-то будет помогать с переводом, но если вдруг кому захочется получить опыт в работе с Emacs и DocBook XML, обращайтесь ;)

DjangoBook по-русски
 
 
15 Март 2009 @ 09:08
Подскажите, пожалуйста, новичку как вывести из этих моделей поля

вот сокращенный пример 2х моделей (всего их около 20):

class Zaemschik(models.Model):
name = models.CharField(max_length=255)
lastname = models.CharField(max_length=255)

class Kvartira(models.Model):
Kvartira = models.OneToOneField(Zaemschik, primary_key=True)
adress = models.CharField(max_length=255)

Нужно вывести список заемщиков в виде
Zaemschik.id + Zaemschik.name + Zaemschik.lastname + Kvartira.Kvartira + Kvartira.adress

В view.py пробовал по-разному, последний вариант был такой
def index(request):
zaemschik_list = Zaemschik.objects.all()
kvartira_list = Kvartira.objects.all()
combo_list = (zaemschik_list, kvartira_list)
return render_to_response('base/index.html', {'combo_list': combo_list})

В шаблоне тоже не понял как нужно выводить, мучался с for'ами, так и не получилось вывести в таком виде.

Подскажите плизз как оно выводится?


Спасибо!

P.S.
еще пробовал так в шаблоне
{% for Zaemschik, Kvartira in combo_list %}
  • {{ Zaemschik.id }} - {{ Zaemschik.name }} - {{ Kvartira.adress }}

  • {% endfor %}
    но так выводится 1я запись из заемщиков и последняя запись из квартиры, остальное пропускается