2015-12-14 4 views
0

Итак, я сделал переход от Flask к Django, чтобы попробовать последний. Пока мне очень нравятся модели в Django, но я столкнулся с проблемой, которую я не могу понять.Django Queryset Repr Error

Так что я делаю заявление в блоге, и когда я бегу следующее, я получаю эту ошибку:

Unable to get repr for class 'django.db.models.query.QuerySet'

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

class HomeView(TemplateView): 
    template_name = "home.html" 
    context_object_name = 'nav_elements' 

    def get_context_data(self, **kwargs): 
     nav_elements = {} 
     if OASIS_BLOG in INSTALLED_APPS: 
      nav_elements[OASIS_BLOG[5:]] = self.get_categories() 
     return nav_elements 

    @staticmethod 
    def get_categories(): 
     from apps.OASIS_Blog.models import Category 
     cats = Category.objects.all() 
     catdict = {} 
     for cat in cats: 
      if not cat.parent_category: 
       if not catdict.get(cat.name): 
        catdict[cat.name] = [] 
       else: 
        pass 
      else: 
       if cat.parent_category.name in catdict.keys(): 
        catdict[cat.parent_category.name].append('\t' + cat.name)   
       else: 
        catdict[cat.parent_category.name] = ['\t' + cat.name]  
     return catdict 

А вот модель категории ...

class Category(models.Model): 
    name = models.CharField(max_length=64, blank=False) 
    parent_category = models.ForeignKey('self', null=True, blank=True) 

    def __unicode__(self): 
     return u'{0}{1}'.format(
      self.name, 
      "" if not self.parent_category else " - {0}".format(
       self.parent_category 
      ) 
     ) 

    class Meta: 
     app_label = 'OASIS_Blog' 
     verbose_name_plural = "categories" 

Я ВГ Не знаю, почему это происходит, и моя попытка найти решение при отладке или прокрутке форумов и документации не показала ничего, что подсказывает мне решение. Кто-нибудь знает, что здесь происходит?

+0

Не могли бы вы показать трассировку? – knbk

+0

Он не оставлял его. Он просто возвращает None в переменную 'cats'; это сообщение об ошибке наблюдается только при отладке. Я думаю, что нашел проблему. – BrotherJack

+0

Возможно, этот вопрос необходимо удалить. Если кто-то не сможет дать лучший ответ на вопрос, почему это произошло, я полагаю. Я имею в виду, что это просто помогло, но я не думаю, что это поможет кому-то еще, как сейчас. – BrotherJack

ответ

0

Проблема заключается в том, что я направлял скрипт manage.py в неправильный файл настроек. Есть еще некоторые неотвеченные вопросы. Большая причина в том, почему я могу получить доступ к данным категории в оболочке, но не при запуске сервера. Это может иметь какое-то отношение к тому, как вызывается метод manage.py.

В первом случае я бы просто назвал «python manage.py shell», в последнем я бы назвал «python manage.py runningerver config.settings» (я изменил это на config.environment.development, и теперь это работает должным образом).

+0

Это звучит как проблема с окружающей средой. Вы можете попробовать распечатать (или занести в журнал) информацию о том, где она была выполнена в обоих случаях, и посмотреть, что другое. – BlackVegetable

+0

Простите, что последний комментарий кажется немного странным. Мне интересно, можем ли мы извлечь переменные среды, такие как $ PATH, в обоих случаях. Я не знаю, как это сделать с головы, но это не может быть так сложно. – BlackVegetable