2012-04-02 18 views
8

के माध्यम से मॉडल में एक्सेल डेटा आयात करें मुझे एक्सेल फ़ाइलों के व्यवस्थापक अपलोड स्वीकार करने के लिए Django Admin इंटरफ़ेस की आवश्यकता है जहां प्रत्येक एक्सेल फ़ाइल में डेटा मेरे डेटाबेस मॉडल में डाला जाता है। मैं Django मॉडल व्यवस्थापक पृष्ठ पर ऐसा "अपलोड" बटन कैसे दिखा सकता हूं, जहां बटन क्लिक करने से व्यवस्थापक को .xls फ़ाइल चुनने के लिए कहा जाता है, जिसका डेटा अपलोड होने के बाद डेटाबेस में जोड़ा जाता है?django व्यवस्थापक

+1

यह एक अच्छा सवाल है - कुछ ऐसा जो मुझे पता है कि मुझे पहले Django के तहत जरूरी है, और मुझे खुद को अपनी खुद की परियोजनाओं में से एक की आवश्यकता है। सवाल फिर से खोला जाना चाहिए ताकि हम साझा कर सकें कि हम एक्सेल अपलोड को Django Admin Interface पर कैसे काम करते हैं। –

+0

ओह - और, इस बीच, एक समान सवाल है कि लोग परामर्श कर सकते हैं, लेकिन इसमें एक्सेल फ़ाइल प्रारूप की बजाय '.csv' फ़ाइल प्रारूप शामिल है: http://stackoverflow.com/questions/3974620/ –

उत्तर

4

मुझे चीज़ों के Django पक्ष के बारे में निश्चित नहीं है, लेकिन आप एक्सेल फ़ाइलों को पढ़ने और कुशल बनाने के लिए xlrd का उपयोग कर सकते हैं। एक मुफ्त पीडीएफ है जो इसे Working with Excel files in Python

7

मैंने यह किया है, लेकिन मैंने फ़ाइल अपलोड के साथ एक साधारण दृश्य स्थापित किया है (वास्तव में यह सीधे एक Django व्यवस्थापक पृष्ठ में जोड़ने से अधिक समझ में आता है, एक संपादन के रूप में पेज = एक मॉडल उदाहरण, और मुझे लगता है कि आपके एक्सेल में कई मॉडल हैं)।

forms.py में

, एक फाइल अपलोड क्षेत्र

class ImportExcelForm(forms.Form): 
    file = forms.FileField(label= "Choose excel to upload")  
views.py में

के साथ एक सरल रूप है, एक दृश्य अपलोड कार्रवाई करने के लिए

def test_flowcell(request): 
    c = RequestContext(request, {'other_context':'details here'}) 
    if request.method == 'POST': # If the form has been submitted... 
     form = ImportExcelForm(request.POST, request.FILES) # A form bound to the POST data 
     if form.is_valid(): # All validation rules pass 
      excel_parser= ExcelParser() 
      success, log = excel_parser.read_excel(request.FILES['file']) 
      if success: 
       return redirect(reverse('admin:index') + "pages/flowcell_good/") ## redirects to aliquot page ordered by the most recent 
      else: 
       errors = '* Problem with flowcell * <br><br>log details below:<br>' + "<br>".join(log) 
       c['errors'] = mark_safe(errors) 
     else: 
      c['errors'] = form.errors 
    else: 
     form = ImportExcelForm() # An unbound form 
    c['form'] = form 
    return render_to_response('sequencing/file_upload.html') 

और अन्य पोस्ट उपयोग में सुझाव के रूप में एक्सेल फ़ाइल से डेटा पढ़ने के लिए xlrd। मैं इस

import xlrd 

class ExcelParser(object, excel_name): 
    @transaction.commit_on_success   
    def read_excel(self): 
     wb = xlrd.open_workbook(excel_name) 

     ... 
     do your parsing in here..... 
     ... 

लिए एक अलग फ़ाइल ExcelParser.py (मुझे लगता है कि उत्कृष्टता प्राप्त डेटा आयात करने के एक भयानक, और त्रुटि प्रवण तरीका है जोड़ने के हो सकते हैं, कर सकते है। मैं अपने काम पर यह का एक बहुत करते हैं, और करने के लिए कोशिश कर रहा हूँ प्रबंधन को समझें कि बहुत बेहतर समाधान हैं।)

2

django-import-export सहायक हो सकता है।

यह व्यवस्थापक वस्तुओं और परमिट के लिए दो बटन "आयात" और "निर्यात" बनाता है xls सहित कई प्रकार के एक्सटेंशन का चयन करता है। यह भी दिखाता है कि डेटा आयात किया जाना चाहिए और निष्पादन निष्पादित करने से पहले पुष्टि की जानी चाहिए।

आपको इसे INSTALLED_APPS में शामिल करने और उस वर्ग के आयात-निर्यात संसाधन को बनाने की आवश्यकता है जिसे आप अपलोड करना चाहते हैं और व्यवस्थापक में बटन दिखाने के लिए पहले बनाए गए संसाधन वर्ग से संबंधित ImportExportModelAdmin का उप-वर्ग बनाएं।

http://django-import-export.readthedocs.org/en/latest/getting_started.html https://github.com/bmihelac/django-import-export: पर

अधिक जानकारी।

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