0

私はDjangoでWebサイトに取り組んでいます。

写真用と人物用の 2 つのモデルを作成しました。

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)

私が望んでいるのは、写真に人をタグ付けできるようにすることです。

私の問題は、adminで新しい写真を作成できることです、それを変更/表示したい場合 ( 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

そして私はそれを理解することができません。

4

2 に答える 2

1

完全なトレースバックは役に立ちました。

問題はあなたのフィールドのrelated_name属性にあると思います。peopleこれを翻訳用にマークしましたが、それは意味がありません。これはコードで使用する属性であり、一般に公開されるものではありません。_()電話に出てください。

于 2012-09-13T09:56:10.453 に答える
0

photoはオブジェクトですが、これを次のように取得したいstr

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

属性が必要ですurl:

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'))
于 2012-09-13T09:54:40.580 に答える