2017-01-10 4 views
0

Простой Джанго запрос не работает, и мне интересно, почемуПочему я получаю Invalid literal для ошибки исключения int() при запуске базового запроса django?

models.py

class Entry(models.Model): 
    headline= models.CharField(max_length=200,) 
    body_text = models.TextField() 
    author=models.ForeignKey(settings.AUTH_USER_MODEL, related_name='entryauthors') 
    pub_date=models.DateTimeField(auto_now_add=True) 

    def __str__(self): 
     return u'%s %s %s %s %s %s %s' % (self.headline, self.body_text, self.author, self.pub_date) 

В Джанго оболочке или в моих взглядах я попытался

itemstosell = Entry.objects.get(author=username)[:4] 

что приводит к:

Exception Type: ValueError 
Exception Value: invalid literal for int() with base 10: 'john' 

ответ

0

Поскольку автор является иностранным ключом a nd как таковой будет ссылкой на первичный ключ в пользовательской модели, которая, вероятно, будет целым числом. Ваше должно быть сделано

itemstosell = Entry.objects.get(author__username=username)[:4] 
0

По умолчанию метод «получить» возвращает только 1 результат. Мы используем его следующим образом: itemstosell = Entry.objects.get (pk = 1)

Метод «фильтр» может возвращать QuerySet, если вы хотите использовать «(author__username = имя пользователя) [: 4]» как option, вы должны использовать этот стиль: itemstosell = Entry.objects.filter (author__username = имя пользователя) [: 4]

+0

ОН, я ПОНИМАЮ, Я думаю, ваша проблема в том, что вы не установили метод «__str__» в " AUTH_USER_MODEL ". Итак, django возвращает первичный ключ, который может быть числом« id ». Я думаю, вы должны изменить свой «AUTH_USER_MODEL», добавить контент, как показано ниже: def __str __ (self): return self.username –