2017-01-10 22 views
0

一個簡單的Django查詢不工作,我很奇怪,爲什麼運行基本django查詢時,爲什麼我會爲int()異常錯誤獲取無效文字?

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) 

在Django的殼或在我的意見我已經試過

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

導致:

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

回答

0

因爲作者是外鍵a因此這將是對用戶模型上的主鍵的引用,其可能是整數。你應該做的

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

默認情況下,「get」方法只返回1個結果。我們這樣使用它: itemstosell = Entry.objects.get(pk = 1)

「filter」方法可以返回一個QuerySet,如果你想使用「(author__username = username)[:4]」作爲一個選項,你應該使用下面的風格: itemstosell = Entry.objects.filter(author__username = username)[:4]

+0

OH,I UNDERSTAND,我認爲你的問題是你沒有在「 AUTH_USER_MODEL「,所以,django返回可能是數字」id「的主鍵。我認爲你應該改變你的「AUTH_USER_MODEL」,添加如下內容: def __str __(self): return self.username –

相關問題