1

感谢您花时间帮助我。

我对 django 和 python 很陌生。

所以我有一个模型,我试图从另一个模型中提取一些数据来构建一个登陆页面。我试图让它在管理员中完全可定制,但我发现为了我想要的,我将不得不涉及 AJAX。我已经取消了它,并主要删除了管理员自定义,因为这实际上只适用于我自己的个人网站。

因此,归结为总体目标:

  • 有很多“图库”页面我想从中提取第一张图片

  • 我的“登陆”页面上的每个画廊都将是来自每个画廊、标题和画廊网址的单个图像。

这是我的模型的一部分: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'

我也尝试通过交互式外壳来执行此操作,并且在调用“保存()”时遇到相同的错误

我真的离基地很远吗?我真的很感谢你的帮助。

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 回答