Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 7, 2009 18:29:02

Nick2009
От:
Зарегистрирован: 2009-06-24
Сообщения: 161
Репутация: +  0  -
Профиль   Отправить e-mail  

Вычисляемое поле в классе модели

При выводе в шаблоне запроса из базы данных возникла проблема.
Нельзя делать отсечение, а мне нужно вывести подстроку из большого текста.
В качестве решения можно было бы создать в классе модели переменную и сохранять в нее это отсечение во время запроса.
Только чтобы в базе не сохранять.

Попробовал тупо:

class MyTable(models.Model):
bigtext=models.CharField()
subtext=this.bigtext[0:30]
Ошибок не выдает, но и не работатет.

Как это реализовать?



Офлайн

#2 Окт. 7, 2009 19:20:55

Lolka
От:
Зарегистрирован: 2007-09-29
Сообщения: 128
Репутация: +  0  -
Профиль   Отправить e-mail  

Вычисляемое поле в классе модели

А что за БД? У меня кое-что похожее в Postgres'e работает так:

create TRIGGER tsvectorupdate before insert or update on programmes_programm for each row execute procedure tsvector_update_trigger(title_tsv,
'pg_catalog.russian', title);



Офлайн

#3 Окт. 7, 2009 21:02:05

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Вычисляемое поле в классе модели

Nick2009
Нельзя делать отсечение, а мне нужно вывести подстроку из большого текста.
Что значит нельзя? Фильтры slice или truncatewords пробовали?
Nick2009
Попробовал тупо:
А кроме “тупо” чем ещё вы руководствовались, писав такой код? Что такое this и как вы думали это будет работать? Просто интересно.
Lolka
А что за БД? У меня кое-что похожее в Postgres'e работает так:
Что за ужас? Никому это не показывайте больше!



Офлайн

#4 Окт. 7, 2009 21:48:44

denz
От:
Зарегистрирован: 2007-01-09
Сообщения: 117
Репутация: +  0  -
Профиль   Отправить e-mail  

Вычисляемое поле в классе модели

Nick2009
subtext=this.bigtext[0:30]
И тут мне показалось, что я чегото не знаю про Django….или про python …
Что такое `this`?????? И как это не матюкается? Даже я матюкнулся когда этот код увидел.
Может ты просто забыл подключить приложение с этой моделью в settings.INSTALLED_APPS?

Если решать на уровне django сервера, то надо писать както так:
class MyTable(models.Model):
bigtext=models.TextField()

@property
def subtext(self):
return self.bigtext[:30]
Но все дело в том, что если поля реально большие и проблемные, то в плане оптимизации работы с SQL сервером такой метод будет равносильным обращению к первому полю, т.к. изначально все равно будет выдергиваться строка с сервера, а потом с помощью приведенного метода - обрезаться.



Отредактировано (Окт. 7, 2009 22:22:16)

Офлайн

#5 Окт. 12, 2009 14:11:59

Nick2009
От:
Зарегистрирован: 2009-06-24
Сообщения: 161
Репутация: +  0  -
Профиль   Отправить e-mail  

Вычисляемое поле в классе модели

denz
Nick2009
subtext=this.bigtext[0:30]
И тут мне показалось, что я чегото не знаю про Django….или про python …
Что такое `this`?????? И как это не матюкается? Даже я матюкнулся когда этот код увидел.
Может ты просто забыл подключить приложение с этой моделью в settings.INSTALLED_APPS?

Если решать на уровне django сервера, то надо писать както так:
class MyTable(models.Model):
bigtext=models.TextField()

@property
def subtext(self):
return self.bigtext[:30]
Но все дело в том, что если поля реально большие и проблемные, то в плане оптимизации работы с SQL сервером такой метод будет равносильным обращению к первому полю, т.к. изначально все равно будет выдергиваться строка с сервера, а потом с помощью приведенного метода - обрезаться.
Ошибок не выдавал, т.к. я забыл перезапустить апачи…
Пока сделал так
class MyTable(models.Model):
bigtext=models.TextField()
subtext=''
и потом во вьюхе делаю
 for r in qs:
r.subtext=r.bigtext[:30]
Мне оба текста в шаблоне одновременно нужны, но я не знаю как по другому сделать отсечение в шаблоне. Может быть для этого есть специальный тег?

Вариант с property мне понравился. Спасибо!



Отредактировано (Окт. 12, 2009 14:22:14)

Офлайн

#6 Окт. 12, 2009 14:17:38

Nick2009
От:
Зарегистрирован: 2009-06-24
Сообщения: 161
Репутация: +  0  -
Профиль   Отправить e-mail  

Вычисляемое поле в классе модели

Daevaorn
Фильтры slice или truncatewords пробовали?
Нет.



Офлайн

#7 Окт. 12, 2009 15:22:41

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Вычисляемое поле в классе модели

Nick2009
Нет.
Так зря. Они для того и есть.



Офлайн

#8 Окт. 12, 2009 15:32:32

Nick2009
От:
Зарегистрирован: 2009-06-24
Сообщения: 161
Репутация: +  0  -
Профиль   Отправить e-mail  

Вычисляемое поле в классе модели

Daevaorn
Так зря. Они для того и есть.
Ага, переделываю. Спасибо!



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version