2012-09-13 117 views
0

我正在使用Django的網站上工作。Filter()關鍵字必須是字符串

我創建了兩個模型,一個用於照片,另一個用於一個人。

class Photo(models.Model):  
    photo = models.ImageField(upload_to = 'toto') 
    description = models.CharField(_('Description'), max_length = 250) 
    people = models.ManyToManyField('Person', related_name = _('Person')) 

    def display_img(self): 
     return u'<img src="%s" /> - %s - %s' % (self.photo, self.description, self.people) 

    display_img.allow_tags = True 

class Person(models.Model): 
    name = models.CharField(_('Name'), max_length = 50) 

在我看來,我想要的是能夠標記照片上的人。

我的問題是,我可以創建新的照片與管理當我要修改/查看(http://127.0.0.1:8000/admin/module/photo/1/)我得到這個錯誤:

Django Version: 1.4.1 
Exception Type: TypeError 
Exception Value:  
filter() keywords must be strings 
Exception Location: C:\Python26\Lib\site-packages\django\db\models\fields\related.py in get_query_set, line 543 

和我我無法理解它。

回答

1

全追蹤本來是有用的。

我希望問題來自您的people字段中的related_name屬性。您已將此標記爲翻譯,但這沒有意義:這是您在代碼中使用的屬性,而不是用於公共消費的屬性。取出_()電話。

+0

非常感謝您的回覆,它解決了問題!你是個天才! 我對related_name的理解不正確。我將回到文檔。 下一次我會給回溯;) 非常感謝 – trnsnt

0

photo爲對象,但你希望得到這個作爲str

return u'<img src="%s" /> - %s - %s' % (self.photo, self.description, self.people) 

您需要url ATTR:

return u'<img src="%s" /> - %s - %s' % (self.photo.url, self.description, self.people) 

我的解決方案有關people

people = models.ManyToManyField(PersonModel, related_name = _('Persons'), verbose_name=_('Person')) 
+0

非常感謝您的回覆。 它不能解決問題,但它解決了我有關圖像顯示的其他問題。沒有它,圖像不顯示。 謝謝 – trnsnt

相關問題