Форум сайта python.su
0
и так суть
class Test(model): name = text() def _test_field(self): return md5(self.name + str(self.id)) test_field = properti(_test_field) Test.objects.filter(test_field = 'werwer76234fsdfsdf')
Отредактировано and_07 (Авг. 14, 2015 16:16:58)
Офлайн
568
Методами ОРМ? Никак, разумеется! Как вы себе представляете SQL-запрос, который должна была бы сгенерировать ОРМ?
Офлайн
0
ну как то так
select * from test where md5(concat(id,name)) = 'werwer76234fsdfsdf'
Test.objects.raw
Отредактировано and_07 (Авг. 14, 2015 17:05:32)
Офлайн
568
and_07Ок, а если я нахерачу такую функцию?
просто думал есть что то встроенное
class Test(model): name = text() def _test_field(self): res = md5(self.name + str(self.id)) return res + "@{}@".format(res) test_field = properti(_test_field) Test.objects.filter(test_field = 'werwer76234fsdfsdf')
Офлайн
0
ну я без понятия зачем вам это
я к тому что если в данном случае
Test.objects.raw
Отредактировано and_07 (Авг. 14, 2015 16:55:44)
Офлайн
15
Приспрошусь тут, а вообще в Django можно как-то кастомные СУБД-шные функции вызывать? Кроме встроенных Avg, Max и Sum. Та же md5 из примера.
Офлайн
568
plusplus
А почему нет то? Код джанги открыт, берите пример (Avg, Max и Sum) и делайте по примеру свою функцию.
Прикол ОРМ в том, что она гарантирует работоспособность одного и того же кода, для разных СУБД. Не уверен, что во всех поддерживаемых джангой СУБД есть функция md5. Я бы в задаче топикстартера не стал бы изобретать велосипед и отфильтровал бы питоном. Хотя, наверняка сама постановка задачи неоптимальна и можно обойтись безо всяких таких странных хешей. В любом случае, если нужен некий уникальный функционал и на кроссплатформенность плевать, ну сделай ты хранимку, делов то.
Офлайн