and_07
Авг. 14, 2015 16:09:10
и так суть
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')
код образный для обозначения проблемы
FishHook
Авг. 14, 2015 16:35:52
Методами ОРМ? Никак, разумеется! Как вы себе представляете SQL-запрос, который должна была бы сгенерировать ОРМ?
and_07
Авг. 14, 2015 16:41:10
ну как то так
select * from test
where md5(concat(id,name)) = 'werwer76234fsdfsdf'
сделал через
просто думал есть что то встроенное
FishHook
Авг. 14, 2015 16:49:26
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')
and_07
Авг. 14, 2015 16:54:44
ну я без понятия зачем вам это
я к тому что если в данном случае
кашерно то ОК
plusplus
Авг. 16, 2015 18:36:10
Приспрошусь тут, а вообще в Django можно как-то кастомные СУБД-шные функции вызывать? Кроме встроенных Avg, Max и Sum. Та же md5 из примера.
FishHook
Авг. 16, 2015 18:47:29
plusplus
А почему нет то? Код джанги открыт, берите пример (Avg, Max и Sum) и делайте по примеру свою функцию.
Прикол ОРМ в том, что она гарантирует работоспособность одного и того же кода, для разных СУБД. Не уверен, что во всех поддерживаемых джангой СУБД есть функция md5. Я бы в задаче топикстартера не стал бы изобретать велосипед и отфильтровал бы питоном. Хотя, наверняка сама постановка задачи неоптимальна и можно обойтись безо всяких таких странных хешей. В любом случае, если нужен некий уникальный функционал и на кроссплатформенность плевать, ну сделай ты хранимку, делов то.