2017-12-24 12 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

Djangoの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) 
関連する問題