2012-11-16 14 views
6

मुझे अपने डेटाबेस में संग्रहीत django में एक टेक्स्ट फ़ाइल खोलने में समस्या है। मैं अपने मॉडल की FileField के माध्यम से इसे उपयोग करना चाहते ... मॉडल इसफ़ाइलफिल्ल्ड से फ़ाइल सामग्री कैसे प्राप्त करें (txt)?

class MyModel(models.Model): 
     saved_file = FileField() 

मैं व्यवस्थापक इंटरफ़ेस है, जो ठीक काम करता है के माध्यम से एक परीक्षण फ़ाइल अपलोड की तरह कुछ लग रहा है। मेरे विचार में मैं इस फ़ाइल तक पहुंचना चाहता हूं। अगर मैं मानक अजगर खुला() यह ठीक काम करता है के साथ इसे खोलने ...

f = open(path, 'r') 
a = f.readlines() 
return render_to_response('base.html', {'content': a}, context_instance=RequestContext(request)) 

इस फ़ाइल की तर्ज प्रदर्शित करता है ठीक है ... https://docs.djangoproject.com/en/dev/ref/models/fields/#filefield एक एक FieldFile प्रॉक्सी जब एक मॉडल से FileField कहा जाता है हो जाता है के अनुसार, इसलिए

f = MyModel.objects.all().get(id=0).saved_file 

च में FieldFile संग्रहीत करना चाहिए, इसके अलावा प्रलेखन राज्यों एक .Open कास्टिंग FieldFile पर (मोड = 'rb') द्वारा मॉडल से एक फ़ाइल खुलती है, तो

file = f.open(mode='rb') 

को दस्तावेज में बताए गए पायथन .open() की तरह काम करना चाहिए। तो लाइनों को पाने के लिए मैं

file.readlines() 

मुझे लाइनों की सूची वापस करनी चाहिए। क्या होता है कि मुझे यह कहते हुए एक त्रुटि मिलती है कि .readlines() एट्रिब्यूट मौजूद नहीं है। मुझे इसे प्रदर्शित करने के लिए फ़ाइल की आवश्यकता नहीं है, यह फ़ाइल का काम खोलने का परीक्षण करने का एक तरीका है, लेकिन मुझे अपने व्यवसाय तर्क में इसका उपयोग करने के लिए मेरे दृश्य में एक चर में फ़ाइल सामग्री की आवश्यकता है। क्या कोई फ़ाइलफिल्म फ़्रेम को किसी मॉडल से फ़ाइल सामग्री प्राप्त करने का कोई तरीका सुझा सकता है?

+0

आपके 'विशेषता त्रुटि' का पूरा पता क्या है? –

उत्तर

5

FieldFile.open फ़ाइल खोलता है, लेकिन कुछ भी वापस नहीं करता है। तो आपके उदाहरण में fileNone है।

आपको फ़ील्डफ़ाइल पर रीडलाइन को कॉल करना चाहिए। आपके उदाहरण में यह होगा:

f = MyModel.objects.all().get(id=0).saved_file 
f.open(mode='rb') 
lines = f.readlines() 
f.close() 
संबंधित मुद्दे