0

Django 管理者として、バックエンドを介してユーザーがアップロードしたクラスをセットアップしようとしています。ImageField のパスがユーザー入力の DateField 情報に基づくようにしようとしています。これは私が持っているものです。

from django.db import models
from datetime import date

class Article(models.Model):
def img_date(self):
    return str(self.date.year) + str(self.date.month) + str(self.date.day)

#main_title = models.
title = models.TextField(max_length=200)
date = models.DateField()
content = models.TextField()
link = models.CharField(max_length=200)
image = models.ImageField(upload_to=img_date)

ただし、オブジェクトを送信すると、「img_date() は 1 つの位置引数を取りますが、2 つ指定されました」というエラーが表示されます。前に説明したように、手動パスを設定する方法を理解するのに助けが必要です。

ありがとう、

4

1 に答える 1

0

FileField のドキュメントを参照してください(ImageField は FileField を継承しています)。

特に、upload_to 呼び出し可能オブジェクトは、モデル インスタンスと元のファイル名の 2 つの引数を受け入れなければならないことに注意してください。したがって、コードは次のようになります (使用されていないため、日付のインポートを削除しました)。

from django.db import models

def img_date(instance, filename):
    return str(instance.date.year) + str(instance.date.month) + str(instance.date.day)

class Article(models.Model):
    title = models.TextField(max_length=200)
    date = models.DateField()
    content = models.TextField()
    link = models.CharField(max_length=200)
    image = models.ImageField(upload_to=img_date)

サンプル コードを使用しましたが、同じ日付の 2 つの記事が同じ画像パスを使用しないように変更する必要があるでしょう。

于 2014-03-25T17:46:23.053 に答える