Привет всем, я не понимаю как правильно сделать запись в бд, неправильно не хочу писать и хочется разобраться. Есть пасрер который возвращает список с данными определенного типа, вот эти данные нужно сохранить, но кто должен сохранять эти данные? Модель? Парсер? или другой объект специально предназначенный для этого? Прощу написать небольшой пример
Ответ
Если вопрос концептуальный, то есть понятно как написать код, но непонятно куда его положить, то я бы посоветовал не прикручивать к парсеру функционал сохранения данных.
Можно это сохранение сделать во вьюхе, а совсем хорошо написать отдельный модуль с классом-контроллером, который бы получал данные для сохранения, дальше итерировался по ним и создавал/сохранял модели, сформированные из этих данных (ну там 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
Ну вот что-то в этом духе может вам подойдет.
Комментариев нет:
Отправить комментарий