2010-11-29 7 views
0

내 프로젝트에서 파일을 업로드 할 위치를 변경해야합니다. 이 작업은 FileSystemStorage를 사용하여 수행됩니다. Django 관리자를 사용하여 파일을 업로드하는 경로는 쉽게 구성 할 수 있어야합니다.모델이 데이터베이스로 생성되는 순서가 있습니까?

django.db.utils.DatabaseError :. ... 당선자 "설정" "항목", "설정 : 관련하여"설정 " LINE 1 존재하지 않습니다

from django.core.files.storage import FileSystemStorage 
from django.db import models 

class Setting(models.Model): 
    entry = models.CharField(primary_key=True, db_column="entry", max_length=50) 
    value = models.CharField(db_column="value", max_length=250, blank=True, null=True) 

    def __unicode__(self): 
     return "%s" %(self.entry) 

    class Meta: 
     db_table = 'settings' 
     verbose_name = 'Setting' 
     verbose_name_plural = 'Settings'  

fs = FileSystemStorage(location=Setting.objects.get(entry__exact='upload_path').value)  

def generate_filename(instance, filename): 
    ... 

class FileImport(models.Model): 
    data_file = models.FileField(_('Data file'), upload_to=generate_filename, storage=fs) 

나는이 오류가 나타납니다 "."value "FROM"settings "...

FileSystemStorage가 생성되는 행의 경우. Django에게 Setting 객체에 대한 테이블 설정을 먼저 생성 한 다음이 테이블에 몇 가지 비품을 채우라고 알려주는 방법이 있습니까?

답변

0

그래도 Settings 테이블은 채워지지 않으므로 문제가 해결되지 않습니다. 처음으로 인스턴스화 될 때 초기화되는 클래스 속성으로 이동하십시오.

+0

어떻게 수행 할 수 있습니까? – Seitaridis

+0

처음에는 위치에 값으로 None을 지정하고 설정 값이 정확히 그 값을 반환하기 위해 데이터베이스에있는 것으로 생각했습니다. 클래스 DefaultSetting (객체) : – Seitaridis

+0

나는 다음 코드 있지만, 여전히 succes에 쓴 한 FS = 없음을 데프 __init __ (자기) : 자기 .__ 클래스 __ FS가 없음 경우 :.. 자기 .__ 클래스는 __ FS = FileSystemStorage (File_model) : data_file = models.FileField (_ (데이터 파일)), upload_to = generate_filename, storage = DefaultSetting (위치 = Setting.objects.get (entry__exact = '업로드 _ 경로') 값) 클래스 FileImport() .fs) – Seitaridis

관련 문제