Реклама
  • EVILEG
  • Статья
  • 16 января 2018 г. 7:19

Django - Урок 032. Расширенные параметры поиска

Django, Search

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

article = models.ForeignKey(Article, verbose_name=_("Статья"), null=True, blank=True)

Таким образом в конце статьи можно увидеть, сколько вопросов на форуме задано по этой статье. Это позволяет улучшить перелинковку страниц сайта, а также предоставляет пользователям возможность найти похожие вопросы относительно статьи, которую они изучают.

Главным вопросом для меня было, как реализовать список тем на форуме так, чтобы не перегружать сайт дополнительными страницами, которые бы усложнили навигацию. Решение оказалось достаточно простым: добавить возможность поиска на форуме с дополнительными расширенными ключами поиска. А именно ключ article , который определял бы id статьи, по которому нужно отфильтровать все темы на форуме, которые содержат внешний ключ на статью с данным id .

Такой подход позволил минимально изменить главную страницу форума, расширить функционал форума дополнительным поиском и исключить добавление нового представления и шаблона для новых страниц.

  • MinusNull
  • Комментарий
  • 10 января 2018 г. 12:18

QML - Урок 007. ListView Qml. Динамическое создание и удаление элементов

Отлично, теперь понял.

И изменить набор ролей уже будет нельзя, если мы их уже задали.

Что говорится в "Note that when creating content dynamically the set of available properties cannot be changed once set. Whatever properties are first added to the model are the only permitted properties in the model." на http://doc.qt.io/Qt-5/qml-qtqml-models-listmodel.html#append-method .

Благодарю, Евгений.

  • MinusNull
  • Комментарий
  • 10 января 2018 г. 11:56

QML - Урок 007. ListView Qml. Динамическое создание и удаление элементов

строчки 111-114

        model: ListModel {
            id: listModel // задаём ей id для обращения
        }
Создается модель без каких-либо еще ролей, это так?

А где тот момент, когда роль задается?
Строчка 53?
listModel.append({idshnik: "Button " + (++number)})
При первом добавлении элемента задается роль?

Или на строчке 102 внутри создания делегата?
text: idshnik
Но ведь это всего лишь текст кнопки.

Не могу понять как это именно работает :)
  • EVILEG
  • Комментарий
  • 10 января 2018 г. 11:20

QML - Урок 007. ListView Qml. Динамическое создание и удаление элементов

idshnik - это роль в модели данных.
Когда в QML в модель добавляются данные таким способом

listModel.append({idshnik: "Button " + (++number)})
То при попытке забрать данные из модели в QML вызывается во внутренностях ListView метод модели data() , который присутствует во всех моделях в Qt. Как я понимаю, в качестве роли передаётся QString ("idshnik") из делегата, и если в текущем объекте такая роль была найдена
{idshnik: "Button " + (++number)}
то возвращается некоторое значение, которое там было задано.
  • MinusNull
  • Комментарий
  • 10 января 2018 г. 11:00

QML - Урок 007. ListView Qml. Динамическое создание и удаление элементов

Не могу понять, как мы добавляем новый элемент в listModel на строчке 53.
Как я понял из прочитанного: delegate дополняет listModel своими данными, чтобы было удобно ее отображать. В данном случае этими данными является idshnik. Сама listModel не хранит idshnik.
Возникает вопрос, как мы можем писать следующее  listModel.append({idshnik: "Button " + (++number)}).
Ведь что получается, что добавляя новый элемент в listModel мы передаем данные idshnik, а listModel их не хранит. Получается, они передаются сразу делегату? Или я запутался?

  • Ruslan
  • Вопрос
  • 9 января 2018 г. 13:34

Запрос к базе в отдельном потоке.

поток, запрос, модель

В связи с тем что запросы к базе выполняется достаточно долго (удаленные базы на объектах с низкой скоростью интернет соединения) запросы хочется выполнять в отдельных потоках.

Вопрос в следующем: Возможно ли получать из потока модель(QSqlQueryModel, QAbstractItemModel или какую либо другую).
Если нет, то каким образом лучше всего передавать результат работы запроса в основной поток для дальней шей обработки.
Данные нужны только для чтения.
  • EVILEG
  • Статья
  • 30 декабря 2017 г. 15:50

Django - Урок 029. Добавление личных сообщений и чатов на сайте - Часть 1

чат, message, Django, chat, сообщение

По сложившейся традиции расскажу о своих опытах по внедрению нового функционала на сайте. На данный момент этим функционалом являются личные сообщения между пользователями. Конечно, это сейчас работает не так хорошо, как в известных социальных сетях... но в итоге всё будет работать. Главное фидбек на форуме , пожалуйста.

Итак. Очень хотелось добавить личные сообщения на сайте, тем более, что я уже обмолвился об этом полгода назад. Оставался вопрос, как вообще это реализовать. При поиске по интернету удалось наткнуться на вариант, когда формируется следующая модель данных.

  • Id сообщения
  • from_user - отправитель
  • to_user - получатель
  • pub_date - дата сообщения
  • message - контент сообщения

Попытался реализовать данный вариант, но меня остановило то, что вдруг после личных сообщений я захочу сделать чаты? Так почему бы сразу не заложить основу для чатов?

  • alex_lip
  • Ответ
  • 28 декабря 2017 г. 11:08

QDesktopServices::openUrl не работает под IOS

Due to the security model of iOS applications, it’s not possible to directly open a local file from an application to another application.

- вот ведь...

  • EVILEG
  • Ответ
  • 26 декабря 2017 г. 13:13

Как вытащить данные из трех таблиц MySQL

Чтобы вывести в таблицу такие данные, вам нужно будет использовать QSqlQueryModel .

А запрос должен выглядеть следующим образом:
SELECT id_user, SUM(summ_work)
FROM table_works
GROUP BY id_user
Следующий запрос должен выбрать колонки id_user и summ_work из таблицы выполненных работ и при этом суммировать все значения долга работ по пользователям, как раз с учётом группировки по id_user.

Единственное, здесь будет подставлен id пользователя, а не его имя. Для этого потребуется писать более сложный join запрос. Но реализуйте для начала этот вариант.
  • Игорь
  • Вопрос
  • 19 декабря 2017 г. 12:44

Файловый менеджер или как отследить вставленную флешку в комп

Qt

QFileInfoList drivers=QDir::drives();
есть такая строчка
я последовательно добавляю в QComboBox
в принципе все хорошо и лаконично

Но это надстройка над QFileSystemModel
и мне бы желательно обновлять QComboBox при вставке флешки
как мне это отследить?(подскажите пожалуйста)
Заранее спасибо)



Реклама
  • falcon
  • 16 января 2018 г. 17:25

Qt - Тест 001. Сигналы и слоты

  • Результат 100 баллов
  • Очки рейтинга 10
  • falcon
  • 16 января 2018 г. 17:22

Qt - Тест 001. Сигналы и слоты

  • Результат 68 баллов
  • Очки рейтинга -1
  • falcon
  • 16 января 2018 г. 17:18

C++ - Тест 001. Первая программа и типы данных

  • Результат 73 баллов
  • Очки рейтинга 1
Последние комментарии

QML - Урок 021. Переключение между окнами в QML

Спасибо всем. Все получилось. Прикручиваю логику.

  • BlinCT
  • 14 января 2018 г. 19:28

Разработка на Qt под iOS

Вот честно, на сколько же муторно под огрызок что то делать. Куча проблем) А вод линь или под Андроид все просто и тривиально))

  • folax
  • 12 января 2018 г. 9:16

QML - Урок 021. Переключение между окнами в QML

Ничего сложного, делаете по тех заданию 3 файла qml, называете их как указанно в тех задании, потом из первого окна через Loader их переключаете, в окне 2 и 3 делаете сигналы которые при закры...

QML - Урок 021. Переключение между окнами в QML

Все верно, я и не говорил что этот кусок кода лично мое произведение. Это тоже верно: Это задание для прохождения на собеседование в одну из крупных украинских IT компаний. Логику ...

  • folax
  • 12 января 2018 г. 8:13

QML - Урок 021. Переключение между окнами в QML

int main(int argc, char *argv[]){ QApplication app(argc, argv); Logic logic; QQmlApplicationEngine engine; engine.rootContext()->setContextProperty("logic", &logic)...

Сейчас обсуждают на форуме

ChartView. Отображение метки данных точки серии при наведении курсора

Спасибо большущее за советы! Все получилось через ScatterSeries. Методы remove() как-то сходу не дались, удаляет в первый раз, а потом программа падает... Не стал тратить время и воспользовалс...

  • EVILEG
  • 16 января 2018 г. 14:23

Как проверить доступность сервера

Добрый день! Теоретически можно использовать QTcpSocket, у него есть метод connectToHost. Возможно, что проверка доступности через этот класс будет осуществляться несколько быстрее,...

QGraphicsScene

спасибо, за подробное объяснение строчки, а с зумом я разобрался, все работает

  • EVILEG
  • 15 января 2018 г. 17:21

Qt webgl

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

  • EVILEG
  • 15 января 2018 г. 11:39

Проблема добавления #DEFINE при сборке CMak'ом

А Вы не пробовали сделать предкомпилированные библиотеки boost под свою систему, а потом уже подключать собранные библиотеки Boost`а? Просто один только boost может собираться на пару гиг...