2012-04-02 24 views
8

Her Excel dosyasındaki verilerin veritabanı modellerime eklendiği Excel dosyalarının yönetici yüklemelerini kabul etmek için Django Yönetici arayüzüne ihtiyacım var. Django model yönetici sayfasında böyle bir “Yükleme” düğmesi nasıl görünebilir, düğmeyi tıklatarak yöneticiye, yükleme tamamlandıktan sonra verileri veritabanına eklenecek bir .xls dosyasını seçmesi istenir.İthalatı django admin üzerinden modellere excel verileri

+1

Bu harika bir soru - bildiğim başka bir geliştiricinin Django'ya daha önce ihtiyacı vardı ve şu anda kendi projelerimden birine ihtiyacım var. Sorunun yeniden açılması, böylece Excel'in Django Yönetici Arayüzüne nasıl çalıştığını nasıl paylaşabileceğimizi paylaşabiliriz. –

+0

Oh - ve bu arada, insanların danışabileceği benzer bir soru var, ancak Excel dosya formatı yerine '.csv' dosya formatını içerir: http://stackoverflow.com/questions/3974620/ –

cevap

7

'u açıklayan ücretsiz bir PDF dosyası var. Bunu yaptım, ancak bir dosya yüklemesiyle basit bir görünüm oluşturdum (aslında bu bir düzenleme olarak doğrudan bir Django yönetici sayfasına eklemekten daha mantıklıdır) sayfa = bir model örneği ve excel'inin birden fazla model içerdiğini varsayalım). forms.py içinde

, bir dosya yükleme alanına views.py içinde

class ImportExcelForm(forms.Form): 
    file = forms.FileField(label= "Choose excel to upload")  

ile basit formu, görünüm yükleme işlemek için

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') 

ve diğer post kullanımda önerildiği gibi excel dosyasındaki verileri okumak için xlrd. Bu

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..... 
     ... 

için ayrı bir dosya ExcelParser.py (I verileri almak için korkunç bir ve hata eğilimli bir yoldur excel ki ekleyebilir miyim var. İş yerimdeki bunun bir sürü yapmak ve çalışıyorum yönetimi çok daha iyi çözümler olduğunu ikna edin.)

2

django-import-export yardımcı olabilir.

Yönetici nesneleri için iki düğme "içe aktarma" ve "dışa aktarma" oluşturur ve izinler de dahil olmak üzere birçok türde uzantı seçer. Ayrıca, verilerin içe aktarıldığını gösterir ve yürütme işlemini gerçekleştirmeden önce onaylanmasını ister.

Yalnızca INSTALLED_APPS uygulamasına eklemeniz ve yüklemek istediğiniz sınıfın bir içe aktarma dışa aktarma kaynağı oluşturması ve yönetici düğmelerini göstermek için daha önce oluşturulan kaynak sınıfıyla ilişkili bir ImportExportModelAdmin alt sınıfı oluşturmanız yeterlidir.

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

fazla bilgi.