2009-05-11 12 views
5

मैं एक Django मॉडल में पायथन में उत्पन्न बड़े डेटासेट को स्टोर करना चाहता हूं। मेरा विचार था कि डेटा को स्ट्रिंग में ले जाएं और इसे मेरे मॉडल के फाइलफिल्ड पर अपलोड करें। मेरे Django मॉडल है: file रास्तों upload_to पैरामीटर के साथ परिभाषित के संरक्षण मेंमैं django फ़ाइलफिल्ड में मसालेदार डेटा कैसे अपलोड करूं?

import random, pickle 

data_entry = Data(label="somedata") 
somedata = [random.random() for i in range(10000)] 
# Next line does NOT work 
#data_entry.file.save(filename, pickle.dumps(somedata)) 

मैं somedata स्टोर करने के लिए अंतिम पंक्ति को कैसे संशोधित करना चाहिए:

#models.py 
from django.db import models 

class Data(models.Model): 
    label = models.CharField(max_length=30) 
    file = models.FileField(upload_to="data") 

मेरी अजगर कार्यक्रम में मैं निम्नलिखित करना चाहते हैं ?

+0

बस इतना हम स्पष्ट हैं: आप किसी भी * उपयोगकर्ता * किसी भी अचार को अपलोड करने के बारे में बात नहीं कर रहे हैं, है ना? यह * बेहद * खतरनाक होगा, –

+0

नहीं, बिलकुल नहीं। विचार सर्वर पर डेटा उत्पन्न करना है और फिर उन्हें डेटाबेस में जोड़ना है। उपयोगकर्ताओं को डेटा उत्पन्न करने के लिए उपयोग किए जाने वाले मॉडलों के पैरामीटर को संशोधित करने की अनुमति होगी (जैसे उपर्युक्त उदाहरण में यादृच्छिक संख्याओं की सीमा)। इस अर्थ में यह वास्तविक "अपलोड" नहीं है, लेकिन फिर भी मैं django पथों का प्रबंधन करना चाहता हूं (नई निर्देशिकाएं बनाएं, डुप्लिकेट से बचें आदि)। – btel

उत्तर

-2

नोट: अन्य उत्तर और नीचे टिप्पणी देखें - पुराने जानकारी और हटाया टूटी कड़ियों (एक बार स्वीकार किए जाते हैं जवाब नहीं हटा सकते हैं)।

मार्टी अल्चिन प्रो प्रो Django, review here के अध्याय 3 में इस पर एक अनुभाग है।

+0

की सिफारिश की होगी, पुस्तक अब तक मुफ्त में उपलब्ध नहीं है, जब तक कि मैं गलत नहीं हूं। – DanH

+0

वह सिर्फ एक वर्ग था। Amazon.com पर एक पूर्वावलोकन है या - यदि आप वास्तव में अपने सभी कड़ी मेहनत के लिए मार्टी का भुगतान नहीं करना चाहते हैं: http://www.ittelkom.ac.id/staf/kms/TOT%20Phython/Pro_Django.pdf –

+0

यह साइट उत्तर के लिए पदोन्नति नहीं है। यह जवाब बेकार है। –

0

क्या आप टेक्स्ट फ़ील्ड में अपना डेटा संग्रहीत करने से बेहतर नहीं हो सकते हैं? यह फाइल अपलोड नहीं है, आखिरकार।

+2

डेटा काफी बड़ा हो सकता है इसलिए मैं इसे डेटाबेस में संग्रहीत नहीं करना चाहूंगा। – btel

1

आपके डेटाबेस में फ़ाइल विशेषता फ़ाइल के लिए एक पथ है। इसलिए, चूंकि आप वास्तविक अपलोड नहीं कर रहे हैं, इसलिए आपको फ़ाइल को डिस्क पर संग्रहीत करने की आवश्यकता है और फिर डेटाबेस में पथ को सहेजने की आवश्यकता है।

f = open(filename, 'w') 
pickle.dump(somedata, f) 
f.close() 
data_entry.file=filename 
data_entry.save() 
+0

उत्तर के लिए धन्यवाद! समस्या यह है कि मैं अभी भी पथ उत्पन्न करने और निर्देशिका बनाने के लिए फ़ाइलफाइल का उपयोग करना चाहता हूं। – btel

0

मैं कभी इस किया है, लेकिन प्रासंगिक कोड का एक सा पढ़ने के आधार पर, मैं django.core.files.base.ContentFile का उदाहरण बनाकर जांच कर रहे हैं और बताए द्वारा शुरू कर दूं कि के रूप में क्षेत्र का मूल्य

9

सवालों के जवाब के आधार पर मैं निम्नलिखित समाधान के साथ आया था:

from django.core.files.base import ContentFile 
import pickle 

content = pickle.dumps(somedata) 
fid = ContentFile(content) 
data_entry.file.save(filename, fid) 
fid.close() 

यह सब सर्वर साइड पर किया जाता है और और उन अचार अपलोड करने की अनुमति नहीं हैं। मैंने इसका परीक्षण किया और यह सब ठीक काम करता है, लेकिन मैं किसी भी सुझाव के लिए खुला हूं।

+0

यही वह है जो मैंने –

संबंधित मुद्दे