1

私を助けてくれてありがとう。

私はdjangoとpythonにかなり慣れていません。

だから私は、ある種のランディングページを構築するために別のモデルからいくつかのデータを取得しようとしているモデルを持っています。管理者で完全にカスタマイズできるようにしようとしていましたが、やりたいことのために AJAX を使用する必要があることがわかりました。私はそれを破棄し、管理者のカスタマイズをほとんど削除することにしました。

全体的な目標を要約すると、次のようになります。

  • 最初の画像を取得したい「ギャラリー」ページがたくさんあります

  • 私の「ランディング」ページの各ギャラリーは、各ギャラリー、タイトル、およびギャラリーへの URL から 1 つの画像になります。

これは私のモデルの一部です:クラスAggeragateImages(Orderable):

    aggeragate = models.ForeignKey("AggeragatePage", related_name="thumbnails")
    gallery_titles = models.CharField(editable=False, max_length=1000)
    gallery_slug = models.CharField(editable=False, max_length=1000)

    def getGallery():
        """
        Returns PK of all Gallery content type pages
        """
        galleryPK = []

        for e in Page.objects.filter(content_model='gallery'):
            galleryPK.append(e.pk)

        return galleryPK

    galleryPK = getGallery()

    for e in galleryPK:
        gallery_titles = Gallery.objects.get(pk=e).titles
        gallery_titles.save()
        gallery_slug = Gallery.objects.get(pk=e).slug
        gallery_slug.save()

    def __unicode__(self):
        return self.name

しかし、syncdb を実行する理由は次のとおりです: AttributeError: 'unicode' object has no attribute 'save'

また、インタラクティブシェルを介してこれを実行しようとしましたが、「save()」を呼び出すときに同じエラーが発生します

私は本当に基地から遠く離れていますか?本当にありがとうございました。

4

1 に答える 1

2

問題は次の場所にあります。

gallery_titles = Gallery.objects.get(pk=e).titles
gallery_titles.save()

するとGallery.objects.get(pk=e)、モデルインスタンスが返されますが、そのtitles属性は文字列( )であると推測されますunicode。その時点でgallery_titles、次の行に保存しようとする文字列がありますが、クラスにはエラーを引き起こすunicodeメソッドがありません。save

補足として、ロジック コードをクラス定義内に直接配置することは、おそらく最善の方法ではありません。より適切なクラス メソッドにロジックを組み込むことができます。その定義内でクラスメソッドを呼び出すと、クラス属性を定義しています。

于 2013-01-20T17:10:28.230 に答える