2

フィールドでupload_to = callableを渡すことであるdjango ImageFieldsとFileFieldsで動的アップロードパスへの方法があることは知っていますが、sorl-thumbnail ImageFieldでこれを達成する方法はありますか?

これは私のmodel.pyです。アップロードパスが定義されていません!

class Brand(models.Model):
    title = models.CharField(max_length=255, null=True, blank=True)
    photo = sorl.thumbnail.ImageField(upload_to=upload_path)
    external = models.BooleanField(_('External Brand? ("Key Account")?'))

    def upload_path(self):
        return u'%s' % self.title
4

2 に答える 2

2

この関連するSOの質問を参照してください。

Sorl-thumbnailは、で特別なことは何もしませんupload_to。これは、Djangoから継承することで渡された引数の処理をパントするだけなFileFieldので、標準で機能するもの、FileFieldまたはImageFieldsorl-thumbnailでも機能するものはすべてImageFieldあります。

あなたの問題はモデルのメソッドを定義することだと思います。私が今まで見たり行ったりしたすべての実装には、モデルの外にあるメソッドがあります。Djangoはインスタンスをメソッドに自動的に渡すので、を介してではなく、モデル上のデータにアクセスする方法ですself

于 2012-02-08T17:28:02.467 に答える
1

このコールバックを sorl で使用します。

def get_image_path(instance, filename):
    """
    puts image in MEDIA_ROOT/photos/instance_id/file
    """
    return os.path.join('photos', str(instance.id), filename)

class Brand(models.Model):
    ...
    photo = sorl.thumbnail.ImageField(upload_to=get_image_path)
于 2012-02-08T22:34:36.160 に答える