Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 8, 2013 14:14:58

andrey16
Зарегистрирован: 2013-09-26
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Django 1.5.3 & Smart Selects

на пути новичка возник следующий вопрос:
в модели сделать выбор подкатегории в зависимости от категории.
нашел smart selectes под это дело.
при первом запуске у меня ругалось на старые типы из python2. я натравил на smart selectes 2to3py. вроде все прошло гладко, но при попытке использовать полученную мною конструкцию на практике ругается на строчку из smart selectes\widgets.py:

empty_label = next(iter(self.choices))[1]  # Hacky way to getting the correct empty_label from the field instead of a hardcoded '--------'

ошибку выдает следующую:
AttributeError: 'generator' object has no attribute 'next'

———-
участники происшествия:
Django 1.5.3 // Python 3.3.2 // Smarts Selects 1.0.9
———-

Офлайн

#2 Окт. 8, 2013 15:43:20

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

Django 1.5.3 & Smart Selects

andrey16
при первом запуске у меня ругалось на старые типы из python2. я натравил на smart selectes 2to3py
ЩИТО?



Офлайн

#3 Окт. 8, 2013 16:00:42

andrey16
Зарегистрирован: 2013-09-26
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Django 1.5.3 & Smart Selects

ежели пускать без преобразования 2to3.py
ругается следующим образом:

NameError: global name 'basestring' is not defined
строчка данная обитает в файле db_fields.py
если прогнать 2to3, basestring меняется на str.

посоветуйте как тогда заставить сей модуль работать

Офлайн

#4 Окт. 8, 2013 16:14:08

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

Django 1.5.3 & Smart Selects

Тут либо одно из двух.
Или эта библиотека откровенная шняга, т.к. basestring никуда из второго питона не девался
http://docs.python.org/2/library/functions.html#basestring
Либо Вы пытаетесь запустить джангу под третьим, с чем я Вам могу только посочувствовать и пожелать удачи.



Офлайн

#5 Окт. 9, 2013 07:08:58

magnet85
От:
Зарегистрирован: 2009-04-13
Сообщения: 91
Репутация: +  2  -
Профиль   Отправить e-mail  

Django 1.5.3 & Smart Selects

FishHook
Тут либо одно из двух.Или эта библиотека откровенная шняга, т.к. basestring никуда из второго питона не девалсяhttp://docs.python.org/2/library/functions.html#basestring Либо Вы пытаетесь запустить джангу под третьим, с чем я Вам могу только посочувствовать и пожелать удачи.
Вы дали ссылку на документацию python 2. Из Python 3 basestring удалили: http://docs.python.org/3.0/whatsnew/3.0.html
И что такого в запуске django 1.5 под python 3?
По ошибке, посмотрите что содержится в self.choices и проверте его тип:
print(self.choices)
print (type(self.choices))



Офлайн

#6 Окт. 9, 2013 10:02:53

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

Django 1.5.3 & Smart Selects

И что такого в запуске django 1.5 под python 3
Ничего кроме того, что сами производители не рекомендуют этого делать
However, we’re labeling this support “experimental” for now: although it’s received extensive testing via our automated test suite, it’s received very little real-world testing. We’ve done our best to eliminate bugs, but we can’t be sure we covered all possible uses of Django.
Ну и сторонние компоненты. Прям все так взяли и кинулись переписывать свои поделия для поддержки третьей ветки! 95% этого хлама делается энтузиастами для своих нужд и не будет переделано никогда.
То есть джанга и третий питон на текущий момент - это, ИМХО, адская смесь из вполне вероятных глюков самого фреймворка и неработоспособными плагинами.
Что такого? Стартовый пост хорошо раскрывает тему.



Офлайн

#7 Окт. 9, 2013 11:06:30

andrey16
Зарегистрирован: 2013-09-26
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Django 1.5.3 & Smart Selects

magnet85
print(self.choices)
print (type(self.choices))
дома буду, проверю.
а под 2 питоном все работает как надо. хотя если кто подскажет аналог для python3 буду благодарен.

если рассматривать пример с гитхаба откуда взят модуль, возникает ситуация, что country может быть много. и их неудобно выбирать, прокручивая гигантский список.
можно ли как-то этот процесс облегчить? какой-нибудь фильтр или другое решение существует?
from smart_selects.db_fields import ChainedForeignKey 
class Location(models.Model)
    continent = models.ForeignKey(Continent)
    country = ChainedForeignKey(
        Country, 
        chained_field="continent",
        chained_model_field="continent", 
        show_all=False, 
        auto_choose=True
    )
    area = ChainedForeignKey(Area, chained_field="country", chained_model_field="country")
    city = models.CharField(max_length=50)
    street = models.CharField(max_length=100)

Офлайн

#8 Окт. 9, 2013 12:01:01

magnet85
От:
Зарегистрирован: 2009-04-13
Сообщения: 91
Репутация: +  2  -
Профиль   Отправить e-mail  

Django 1.5.3 & Smart Selects

FishHook
Ничего кроме того, что сами производители не рекомендуют этого делать
Не совсем так, вот комментарий от одного из авторов django: https://github.com/idlesign/django-sitetree/pull/93#issuecomment-13890792
Основные библиотеки уже поддерживают python 3, к Smart Selects поддержку добавить не сложно.



Офлайн

#9 Окт. 9, 2013 12:06:54

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

Django 1.5.3 & Smart Selects

magnet85
Основные библиотеки уже поддерживают python 3, к Smart Selects поддержку добавить не сложно.
Если я вместо того, чтобы работать по ТЗ буду впиливать поддержки, то кушать придётся реже



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version