Всем хорош Djanfo-фреймворк. Да только вот ORM далеко не самый удобный. Хорошо еще что появилась возможность выполнять Raw-запросы. Например, у менеджера objects() есть метод raw(), с помощью которого можно сконструировать произвольный select.
Но радость от такой возможности омрачается тем, что у RawQuerySet, который получаем на выходе из raw() , нет привычных методов count(), values(), values_list() и тому подобных, так любезно предоставляемых нам классом QuerySet.
Я натолкнулся на это, когда мне потребовалось сформировать HTTP-ответ в формате JSON, содержащий результат довольно хитрой выборки из БД...В итоге список словарей пришлось конструировать вручную.
Примерно так это выглядит:
from django.core.serializers.json import DjangoJSONEncoder
from django.utils import simplejson
def sample_view(request):
mymodels = MyModels.objects.raw("select * from myapp_mymodel")
mlist = list()
for m in mymodels:
mlist.append(
{'id': m.id,'title': m.title,'start': m.date,'end':m.date,}
)
data = simplejson.dumps(mlist, cls=DjangoJSONEncoder)
return HttpResponse(data)
Комментариев нет:
Отправить комментарий
Если Вы нашли ошибку у автора, у Вас есть вопрос или просто хотите поделиться чем-то полезным, то пишите - не стесняйтесь..