万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    DjangoでModelのFileFieldのでのupload_toの件

    class Hoge(models.Model):
        bar_file = models.FileField(u"barファイル",
                                    upload_to='{0}/{1}/{2}'.format(
                                        UPLOAD_BASE_PATH,
                                        'bar_files',
                                        id),
                                    help_text=u'barファイルを選択して下さい')
    

    のように、 アップロードするファイル名にidを使いたかったのでこのように書いてしまうと、 ModelのidはFieldなので困った。

        uuid = UUIDField(auto=True)

    を使ったとしても一緒。 あくまでも、Modelクラスの変数はFieldだ。

    Django FileField with upload_to determined at runtime - Stack Overflow

    ここを見ると、

    file = models.FileField(
        upload_to=lambda instance, filename: '/'.join(['mymodel', str(instance.pk), filename]),
    )

    のような具合にしたら、 インスタンスが取れそうだ