#python #ооп #django
Привет всем, я не понимаю как правильно сделать запись в бд, неправильно не хочу писать и хочется разобраться. Есть пасрер который возвращает список с данными определенного типа, вот эти данные нужно сохранить, но кто должен сохранять эти данные? Модель? Парсер? или другой объект специально предназначенный для этого? Прощу написать небольшой пример
Ответы
Ответ 1
Если вопрос концептуальный, то есть понятно как написать код, но непонятно куда его положить, то я бы посоветовал не прикручивать к парсеру функционал сохранения данных. Можно это сохранение сделать во вьюхе, а совсем хорошо написать отдельный модуль с классом-контроллером, который бы получал данные для сохранения, дальше итерировался по ним и создавал/сохранял модели, сформированные из этих данных (ну там MyModel.objects.create(arg1=arg1, arg2=arg2) и т.д.) В этом случае во вьюхе можно получить данные из парсера и передать их экземпляру контроллера, который их и сохранит. Вся логика по обработке данных будет располагаться в объекте контроллера, что удобно и красиво будет. upd Заведите модуль в директории с приложением, назовем его controllers.py # controllers.py class LessonController(object): def __init__(self, data): super(LessonController, self).__init__() self.data = data def save_parsed_data(self): for item in self.data: Lesson.objects.create( subject=item.subject, teacher=item.teacher, ... ) # views.py from controllers import LessonController def my_view(request): x = Parser("D:/rsp.xls") schedule = x.parse() lesson_ctl = LessonController(schedule) lesson_ctl.save_parsed_data Ну вот что-то в этом духе может вам подойдет.Ответ 2
Привет. Смутно понятно как-то, но если это то, что я понял, сделайте во вьюшке так, например: from .models import Имятвоеймодели def some_function(request): че-нибудь = Имятвоеймодели() че-нибудь.полемодели = какие-тоданныеотпарсера че-нибудь.save() А вообще подробнее опишите свой парсер, дайте пример кода.Ответ 3
А почему бы не импортировать sql драйвер и уже от этого плясать, данные записать в переменные и их передать в базу? import sqlite3 например.
Комментариев нет:
Отправить комментарий