search
menu
person

NEWS AND UDATES


10:55
django импорт excel
Появилась очень удобная система для импорта данных из excel в django:

Чтобы начать использовать это приложение django в своем проекте:

1. Переходим на страницу https://github.com/ostrovok-team/django-import-excel и нажимаем кнопку Watch
2.Скачиваем проект себе https://github.com/ostrovok-team/django-import-excel/zipball/master
3. Распаковываем, переходим в папку и запускаем pip install -e . или же python setup.py install
4. В settings.py:

INSTALLED_APPS = [
...
'import_excel',
...
]

5. Итак, например, нам надо импортировать данные из excel для модели

class Book(models.Model):

name = models.CharField(max_length=255)
author = models.CharField(max_length=255)

Файл excel же содержит данные

name | author
Мастер и Маргарита | Михаил Булгаков
И дольше века длится день | Чингиз Айтматов

Для этого создаем форму

from django.db import transaction
from import_excel.forms import ImportExcelForm

class BookImportForm(ImportExcelForm):

@transaction.autocommit
def update_callback(self, request, converted_data):
for book_data in converted_data:
name = book_data['name']
author = book_data['author']
Book.objects.create(name=name, author=author)

Далее, в urls.py:

urlpatterns = patterns('',
url(r'^/books/import-from-excel/$', permission_required('books.add_book')(import_excel), {
'FormClass': BookImportForm, 'next_url': '/books/', 'with_good': True, 'template_name': 'import_excel/import_excel.html',
}, name='book-import-excel'),
),

Видим здесь мы указываем форму для загрузки книг, next_url - страницу для перехода после успешной загрузки, with_good - это значит, что надо подтвердить загружаемые данные с предварительным просмотром, также вы можете указывать template_name, если захотите задать свой (скопируйте файл из import_excel/templates/import_excel/import_excel.html)

источник: блог опыт работы с python
Просмотров: 2000 | Добавил: django | Рейтинг: 5.0/1
Всего комментариев: 0
dth="100%" cellspacing="1" cellpadding="2" class="commTable">
Имя *: Email:
Код *: