0

我最初的问题实际上是如何将用户外键添加到 Photolog 类型类(使用 Imagekit)

我看到了一个类似问题的答案,但是当我尝试实现它时,我得到了global name 'system_user' is not defined

system_user我对此并不感到惊讶,但令我惊讶的是,尽管它在答案中,但我在 django 文档中找不到参考。

(它不在 docs.djangoproject.com 上,Google for django+system_user 没有返回任何有趣的东西。)

class Photo在 Photologue models.py 中有这个

def save(self, *args, **kwargs):
    if self.title_slug is None:
        self.title_slug = slugify(self.title)
    if 'owner' not in self.__dict__:
         self.owner = system_user()               # this line fails
    super(Photo, self).save(*args, **kwargs)

我应该如何 import system_user(),或者我可以在这里使用什么?

4

1 回答 1

2

不,system_user不是 django 函数。您应该将所有代码片段都视为伪代码——他只是在说“一个返回我的对象​​的函数”。

grep -ri "system_user" /path/to/django什么都不返回,所以它在 django 源中不存在。

查看您链接到的问题中接受的答案,他覆盖了 save 方法,传入用户对象,并手动将对象与用户关联。

在您的情况下,由于您使用的是模型,因此您必须将用户对象传递给模型save()方法。

# models
    def save(self, user=None, *args, **kwargs):
        if self.title_slug is None:
            self.title_slug = slugify(self.title)
        if user:
            self.owner = user
        super(Photo, self).save(*args, **kwargs)

# usage in view
myobj.save(user=request.user)
于 2011-01-20T18:42:04.510 回答