Найти - Пользователи
Полная версия: Django 1.5.3 & Smart Selects
Начало » Django » Django 1.5.3 & Smart Selects
1
andrey16
на пути новичка возник следующий вопрос:
в модели сделать выбор подкатегории в зависимости от категории.
нашел 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
———-
FishHook
andrey16
при первом запуске у меня ругалось на старые типы из python2. я натравил на smart selectes 2to3py
ЩИТО?
andrey16
ежели пускать без преобразования 2to3.py
ругается следующим образом:
NameError: global name 'basestring' is not defined
строчка данная обитает в файле db_fields.py
если прогнать 2to3, basestring меняется на str.

посоветуйте как тогда заставить сей модуль работать
FishHook
Тут либо одно из двух.
Или эта библиотека откровенная шняга, т.к. basestring никуда из второго питона не девался
http://docs.python.org/2/library/functions.html#basestring
Либо Вы пытаетесь запустить джангу под третьим, с чем я Вам могу только посочувствовать и пожелать удачи.
magnet85
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))
FishHook
И что такого в запуске 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% этого хлама делается энтузиастами для своих нужд и не будет переделано никогда.
То есть джанга и третий питон на текущий момент - это, ИМХО, адская смесь из вполне вероятных глюков самого фреймворка и неработоспособными плагинами.
Что такого? Стартовый пост хорошо раскрывает тему.
andrey16
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)
magnet85
FishHook
Ничего кроме того, что сами производители не рекомендуют этого делать
Не совсем так, вот комментарий от одного из авторов django: https://github.com/idlesign/django-sitetree/pull/93#issuecomment-13890792
Основные библиотеки уже поддерживают python 3, к Smart Selects поддержку добавить не сложно.
FishHook
magnet85
Основные библиотеки уже поддерживают python 3, к Smart Selects поддержку добавить не сложно.
Если я вместо того, чтобы работать по ТЗ буду впиливать поддержки, то кушать придётся реже
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB