2016-10-21 38 views
1

在我的Django應用程序中,用戶填寫表單並上傳文件。我需要創建多個數據庫條目,但他們都應引用相同的文件。換句話說,如果有10個對象需要創建,我不想將上傳的文件保存10次到我的存儲後端。我想保存文件一次,然後每個數據庫條目應引用相同的文件。將相同的文件保存到Django中的多個數據庫條目中

下面是我目前有,但它會創建文件多次

class MyModel(models.Model): 
    price = models.FloatField() 
    my_file = models.FileField() 


class BatchTradeForm(forms.Form): 
    price = forms.FloatField() 
    my_file = forms.FileField() 

    def create(self): 
     new_items = [] 
     for x in range(10): 
      entry = MyModel(**self.cleaned_data) 
      new_items.append(entry) 
     MyModel.objects.bulk_create(new_items) 

class MyView(FormView): 
    def form_valid(self, form): 
     form.create() 

我猜我需要手動首先將文件保存到我的存儲後端,然後保存參考一些如何,但我肯定有一個更簡單的方法來實現這一點?

回答

0

這就是我想出的。想知道這種方法是否有缺點,因爲我手動保存文件?

my_file = self.cleaned_data.pop('my_file', None) 
if my_file: 
    p = "path/to/{0}".format(my_file.name) 
    path = default_storage.save(p, my_file) 

new_items = [] 
for x in range(10): 
    entry = MyModel(**self.cleaned_data) 
    if my_file: 
     entry.my_file = path 
    new_items.append(entry) 
MyModel.objects.bulk_create(new_items) 
相關問題