2017-12-24 3 views
0

저장의 일부로 CSV 파일을 만들고 저장하려고 시도하고 파일을 레코드에 연결하려고합니다. Django - 모델 저장 중에 파일을 추가하는 방법?

내 모델이 생성하고 내가 원하는하지만 모델에 저장하지 않습니다 정확히 파일을 저장

class ReOrder (models.Model): 
    product = models.ForeignKey(
     Product, 
    ) 
    order_quantity = models.IntegerField(
     default = 0 
    ) 
    order_date = models.DateField(
     default = datetime.datetime.now() 
    ) 
    received = models.BooleanField(
     default = False 
    ) 
    order_file = models.FileField(
     upload_to = 'reorder_documents/', 
     null = True, 
     blank = True 
    ) 
    def __unicode__(self): 
     return u'%s' % (self.product) 

    def save(self, *args, **kwargs): 
     # create the text file 
     filename = str(self.product)+'_'+str(self.order_date)+".csv" 
     path = os.path.join(MEDIA_ROOT, 'reorder_documents', filename) 
     print path 
     f = open(path, 'wrb') 
     f.truncate() 
     writer = csv.writer(f) 
     writer.writerow((self.product, self.order_quantity)) 
     f.close() 
     self.order_file = ContentFile(f) 

     #save everything 
     super(ReOrder, self).save(*args, **kwargs) # Call the "real" save() method. 

입니다. 어떻게해야합니까? DB 만 문자열 그래서 당신은 파일 경로를 저장할 수 있습니다

답변

0

장고의 FileField와 저장 :

def save(self, *args, **kwargs): 
    # create the text file 
    filename = str(self.product)+'_'+str(self.order_date)+".csv" 
    path = os.path.join(MEDIA_ROOT, 'reorder_documents', filename) 
    print path 
    f = open(path, 'wrb') 
    f.truncate() 
    writer = csv.writer(f) 
    writer.writerow((self.product, self.order_quantity)) 
    f.close() 
    self.order_file = os.path.join('reorder_documents', filename) 
    super(ReOrder, self).save(*args, **kwargs) 
관련 문제