2015-05-07 1 views
1

Я использую внешнюю базу данных с Django. Я уже написал скрипт для заполнения базы данных. Я смог получить доступ к этим данным с помощью syncdb, и я создал модель для этих данных.Данные должны быть заданы как

Я могу печатать всю базу данных, но с использованием:

TicketOdds.objects.all()[0] 

вызывает следующее исключение:

ValueError в/

данные должны быть QuerySet типа (есть количество и order_by) или список поддержки (данные) - TicketOdds не имеет ни

Моя модель:

class TicketOdds(models.Model): 
    #id = models.AutoField(primary_key=True) 
    price = models.IntegerField(blank=True, null=True) 
    ticket_name = models.TextField(blank=True, null=True) 
    ticket_id = models.IntegerField(primary_key=True, blank=True, null=False) 
    odds = models.FloatField(blank=True, null=True) 
    img_url = models.TextField(blank=True, null=True) 
    ticket_url = models.TextField(blank=True, null=True) 

    class Meta: 
     managed = False 
     db_table = 'ticket_odds' 

    def __iter__(self): 
     for i in xrange(100): 
      yield i 

    def __getitem__(self): 
     return unicode(self) 

Что я могу добавить к модели, чтобы сделать это «QuerySet типа»? Я попытался добавить

def __iter__ (self): 

для этой конкретной цели ... я должен быть что-то отсутствует.

+0

Из того, что я вижу, вам удалось использовать все значения в вашем db ('.all()') с помощью 'TableData()', однако вы застреваете, пытаясь передать ему один объект ('. all() [0] '), что приводит к этой ошибке. Чего вы пытаетесь достичь? – Claudiu

ответ

2

Поскольку вы не опубликовали сообщение об ошибке полной трассировки. Я просто проведу вас вместе с процессом, чтобы ответить на ваш вопрос.

  1. Посмотрите на source code. Это вызовет такую ​​ошибку, когда data в TableData(data, table) не будет истребителем. то есть __iter__ не определен.
  2. я сомневаюсь, что вам нужно определить __iter__ методы в вашем Model или Model.Meta, потому QuerySet, который итератор класс может быть получен, когда вы сделали этот вызов: TicketOdds.objects.all()
  3. Пропустите data с QuerySet вы извлечены ранее, когда вам сделать TableData(data, table)

Пример:

TableData(TicketOdds.objects.all(), table) 

Что я могу добавить к модели, чтобы сделать ее «queryset-like»?

Вы не делаете свою модель «подобной запросу», а скорее получаете модель QuerySet с использованием приведенного выше примера.

+0

Прежде всего, я раньше не видел такого шаблона. И я не использую 'django-tables2'. Это может быть лишь частичный ответ или неправильный ответ, но я надеюсь, что вы могли бы попробовать это и сообщить нам, если это сработает. – Yeo

+0

Super noob question ... как получить сообщение об ошибке трассировки? manage.py shell? –

+0

Обычно, когда 'DEBUG = True', они будут печатать любой запрос на ошибку на самой странице« Желтая ». Одним из печатных сообщений является раздел «Traceback». http://i.imgur.com/TWL6f.png – Yeo

 Смежные вопросы

  • Нет связанных вопросов^_^