के माध्यम से मॉडल में एक्सेल डेटा आयात करें मुझे एक्सेल फ़ाइलों के व्यवस्थापक अपलोड स्वीकार करने के लिए Django Admin इंटरफ़ेस की आवश्यकता है जहां प्रत्येक एक्सेल फ़ाइल में डेटा मेरे डेटाबेस मॉडल में डाला जाता है। मैं Django मॉडल व्यवस्थापक पृष्ठ पर ऐसा "अपलोड" बटन कैसे दिखा सकता हूं, जहां बटन क्लिक करने से व्यवस्थापक को .xls
फ़ाइल चुनने के लिए कहा जाता है, जिसका डेटा अपलोड होने के बाद डेटाबेस में जोड़ा जाता है?django व्यवस्थापक
उत्तर
मुझे चीज़ों के Django पक्ष के बारे में निश्चित नहीं है, लेकिन आप एक्सेल फ़ाइलों को पढ़ने और कुशल बनाने के लिए xlrd का उपयोग कर सकते हैं। एक मुफ्त पीडीएफ है जो इसे Working with Excel files in Python
मैंने यह किया है, लेकिन मैंने फ़ाइल अपलोड के साथ एक साधारण दृश्य स्थापित किया है (वास्तव में यह सीधे एक 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 (मुझे लगता है कि उत्कृष्टता प्राप्त डेटा आयात करने के एक भयानक, और त्रुटि प्रवण तरीका है जोड़ने के हो सकते हैं, कर सकते है। मैं अपने काम पर यह का एक बहुत करते हैं, और करने के लिए कोशिश कर रहा हूँ प्रबंधन को समझें कि बहुत बेहतर समाधान हैं।)
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: पर
अधिक जानकारी।
यह एक अच्छा सवाल है - कुछ ऐसा जो मुझे पता है कि मुझे पहले Django के तहत जरूरी है, और मुझे खुद को अपनी खुद की परियोजनाओं में से एक की आवश्यकता है। सवाल फिर से खोला जाना चाहिए ताकि हम साझा कर सकें कि हम एक्सेल अपलोड को Django Admin Interface पर कैसे काम करते हैं। –
ओह - और, इस बीच, एक समान सवाल है कि लोग परामर्श कर सकते हैं, लेकिन इसमें एक्सेल फ़ाइल प्रारूप की बजाय '.csv' फ़ाइल प्रारूप शामिल है: http://stackoverflow.com/questions/3974620/ –