2016-10-18 20 views
2

ajaxフォームの送信を介してdjangoを使用してファイルパスをdbに保存する必要があります。Djangoを使用してMysqlデータベースにファイルパスを保存する方法はありますか?

def dashboard(request): 
 
    container=[] 
 
    DIR = os.path.realpath("/home/user/Desktop/Demo") 
 
    WAY = os.listdir(DIR) 
 
    for file in WAY: 
 
     if file.endswith('.mp4'): 
 
      file_name = file 
 
      FDIR=os.path.join(DIR, file) 
 
      container.append(FDIR) 
 
      
 
    return render(request, 'dashboard.html', {'container': container})

def new_scheduler(request): 
    if request.method =='POST': 
     f_name = request.POST.get('file') 
     dateAndTime = request.POST.get('dateAndTime') 
    Scheduled_data = schedulesdb.objects.create(
      f_name = file, 
      dateAndTime = dateAndTime, 
     ) 
    Scheduled_data.save() 
    return HttpResponse ('done') 

それは<type 'file'>のようにデータベースに保存します。

は、ここに私の見解です。ここで

は私model.pyは次のとおりです。事前に

class schedulesdb(models.Model): 
    f_name = models.CharField(max_length=100) 
    dateAndTime = models.DateTimeField(['%Y-%m-%d %H:%M:%S'],null=True) 
    user = models.ForeignKey(settings.AUTH_USER_MODEL, default=2) 
    def __unicode__(self):    # on Python 2 
     return self.f_name 

感謝:)

+0

あなたは、データベースフィールドに文字列 ""が含まれていると言っていますか? –

+0

はい! f_nameの列に格納されているのは

答えて

1

あなたのコードから、それは単にあなたがクライアントからファイルアップロードを処理しようとしているかどうかを100%はっきりしない、またはファイルパスとなる文字列を格納します(潜在的には、ある種のリモートファイルシステム上のファイルを見つけるためのものです)。

1.ファイルのアップロード

CharFieldですではなく、FileFieldモデルのフィールドタイプを使用することを検討してください。

Djangoのドキュメントには、固い説明と簡単な操作方法の例があります。file uploadsあなたが「ファイル」を代入しているので、あなたのコードサンプルではなくf_name変数よりも、(組み込みタイプである)、「」保存され

F_NAMEフィールドの実際のPOSTデータ値を取得

2以前に宣言したこのように:

def new_scheduler(request): 
if request.method =='POST': 
    f_name = request.POST.get('file') 
    dateAndTime = request.POST.get('dateAndTime') 
Scheduled_data = schedulesdb.objects.create(
     f_name = f_name, # Note the use of f_name instead of file 
     dateAndTime = dateAndTime, 
    ) 
Scheduled_data.save() 
return HttpResponse ('done') 
+0

ローカルディレクトリのファイルパスをデータベースに保存したいだけですが、これをやってみました。 –

+0

DBに格納されている値に変更がありましたか?シェルでpythonを開き、 'file'と入力すると、シェルは組み込みのFileクラスの文字列表現を出力します。したがって、フィールドには適切なPOSTデータではなく「ファイル」オブジェクトが割り当てられていることは明らかです。別の可能性は、request.POST.get( 'file')が問題を引き起こしていることです。おそらく、POSTデータフィールドに衝突しない別の名前を付けてみてください。 –

+0

ありがとうございました! –

関連する問題