django динамический FilePathField - PullRequest
0 голосов
/ 23 июля 2010
class Project(models.Model):
    slug = models.SlugField(max_length=100)
    main_file = models.FilePathField(path="/home/mn/myfiles/%s" % slug)

Этот код не работает, просто иллюстрируя, что я хотел бы сделать.Я хочу заполнить FilePathField при доступе к объекту (т.е. когда он обновляется в django admin, а не при его создании).

Есть ли ловушка, в которой вы можете устанавливать поля непосредственно перед их заполнением?Что-то вроде object.on_get(instance): ... возможно?

1 Ответ

1 голос
/ 23 июля 2010

Непонятно, каковы ваши намерения.

Поскольку экземпляры Model являются просто классами Python, вы можете сделать это с помощью метода класса Project:

class Project(models.Model):
    slug = models.SlugField(max_length=100)

    @property
    def main_file(self):
         return "/home/mn/myfiles/%s" % self.slug

Если вы хотитевручную укажите местоположение вне MEDIA_ROOT для загрузки файлов, вам нужно будет создать подкласс django.db.models.fields.files.FileField и перезаписать метод __init__ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...