определяется system_user () в django? - PullRequest
0 голосов
/ 20 января 2011

Мой оригинальный вопрос был на самом деле, как добавить внешний ключ пользователя в класс типа Photolog (который использует Imagekit)

Я вижу ответ на аналогичный вопрос , но когда я пытался его реализовать, я получаю global name 'system_user' is not defined

Меня это не удивляет, но я удивляюсь, что, хотя это и есть ответ, я не могу найти ссылку на system_user в документации django.

(его нет на docs.djangoproject.com, и Google для 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)

Как мне импортировать system_user(), или что я могу использовать вместо этого?

1 Ответ

2 голосов
/ 20 января 2011

Нет, system_user не является функцией Джанго.Вы должны принять все фрагменты кода как псевдокод - он просто говорит «функция, которая возвращает мой объект».

grep -ri "system_user" /path/to/django ничего не возвращает, поэтому его не существует в источнике django.

Проверьте принятый ответ на вопрос, с которым вы связаны, он переопределяет метод сохранения, передает впользовательский объект и вручную связывает объект с пользователем.

В вашем случае, поскольку вы используете модель, вам придется передать пользовательский объект в метод модели 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)
...