0

私はdjango1.4を使用しており、djangoモデルのファイルフィールドを使用してmodelform経由でドキュメントをアップロードしています。次の問題が発生しています。

フォームを送信すると、次のように表示されます。

Data truncated for column 'file_name' at row 1

これに対する私のモデルは次のとおりです。

class App(models.Model):
    user_name=models.CharField(max_length=50)
    email=models.CharField(max_length=50)
    status=models.CharField(max_length=10,choices=APPLICATIONSTATUSCHOICE)
    archived=models.BooleanField()
    mark_spam=models.BooleanField()
    date=models.DateField()
    file_name=models.FileField(upload_to=PATH+"/")
    def getPath(self):
        return PATH
    def __unicode__(self):
        return self.user_name
    def send_email(self):
        pass

モデルフォームのコードは次のとおりです。

class AppForm(ModelForm):
    class Meta:
     model=App
         exclude=('status','archived','mark_spam')

email=forms.EmailField()

    def save(self,commit=True):
         app=super(AppForm,self).save(commit=False)
     app.status='sent'
         app.save()

また、元の名前でファイルを保存しています。PHPのバックグラウンドから来たので、何か一意の名前でファイルを保存できますか。PHPでは通常のよう <mysql auto id>.<filextension>に保存します。djangoでどのように実行できますか。私の第一印象は、これはすべてdjangoを介して自動的に行われ、それは自分で選んだ名前で保存するだけですが、名前もdbに保存する必要があるので、自分の選択に従って名前を付けたいと思います。どうすればそれを行うことができ、上記のエラーを引き起こしている私のコードの問題は何ですか?

4

1 に答える 1

2

どのくらいfile_name保存しようとしていますか?

デフォルトでは、FileFieldインスタンスはデータベースにvarchar(100)列として作成されます。他のフィールドと同様に、max_length引数を使用して最大長を変更できます。これにより、データ切り捨てエラーが発生する可能性があります。

また、ファイルの名前を好きなように変更できます。アップロードされたファイルのインスタンスと名前を入力として受け取る呼び出し可能オブジェクトにするupload_toことができ、保存する正確な名前とパスを指定できます。

例えば。

def get_file_name(instance, filename):
    return '/'.join(['blah', instance.user.username, filename])

...
    file_name=models.FileField(upload_to=get_file_name)
...
于 2012-10-07T09:46:51.210 に答える