Ответы пользователя по тегу Django
  • Что означает "on_delete doesn’t create a SQL constraint"?

    @Ariurn
    Если совсем прямо: решение о том, что делать с моделью после удаления её ForeignKey согласно on_delete принимается на уровне django. База данных не принимает в этом никакого участия, она выполняет лишь роль хранилища данных.
    Ответ написан
    Комментировать
  • Как правильно выбрать отношение полей в данном случае?

    @Ariurn
    Если я правильно понял, у вас интернет-магазин по схеме: пришёл, добавил товары в корзину и оформил заказ. Как это делал я:
    • Для каждой новой сессии (django.contrib.sessions.models.Session), которая создаётся при посещении пользователем (даже не авторизованным) сайта, создаётся заказ (Order), который имеет статус "Не оформлен" и не отображается в админ-панели. Он имеет ForeignKey (у которого on_delete=models.CASCADE), привязанный к Session. Например: order.session=request.session
    • При добавлении товара в "корзину" создаётся модель OrderProduct, которая имеет два ForeignKey: один - Product, второй - Order, у каждого on_delete=models.CASCADE. Они указывают на то, какой товар добавлен в корзину и какой пользователь его добавил соответственно. Также, нужны доп. поля (например, количество товара, добавленного в корзину).
    • При оформлении заказа, ему устанавливается статус "Оформлен", он отображается в админ-панели, и администратор может с ним работать.

    Есть один нюанс: при большом потоке пользователей на сайт будет создаваться много заказов (Order), которые не будут удаляться, т.к. Session автоматически не удаляются (насколько мне известно). Решение проблемы: запускайте через cron команду python manage.py clearsessions
    Ответ написан
    Комментировать
  • Как отправлять лс в вк с помощью бота?

    @Ariurn
    Нет, не можете.
    Согласно документации API:

    Для создания бота Вам потребуются:
    • Сообщество, от имени которого Ваш бот будет общаться с пользователями ВКонтакте.
    • Сервер, который будет принимать уведомления о событиях.
    • Логика самого бота — скрипт, который определяет, как бот реагирует на то или иное событие.

    То есть, отправление сообщений ботом идёт от лица сообщества. Цитата отсюда:

    Переписка с сообществом может быть инициирована только самим пользователем. Написать от имени группы людям, которые не переписывались с ним, не получится. Однако, когда переписка инициирована, сообщество сможет отправлять сообщения без ограничений по времени или количеству. Это будет продолжаться до тех пор, пока пользователь не запретит сообществу себе писать.
    Пользователь может инициировать переписку:
    • отправив сообществу сообщение со страницы сообщества;
    • с помощью кнопки «Разрешить сообщения» на странице сообщества;
    • отправив сообществу сообщение с помощью виджета «Сообщения сообщества», размещённого на сайте сообщества;
    • разрешив отправлять ему личные сообщения с помощью виджета «Разрешить писать сообществу» или метода API VK в стороннем приложении (отправлять сообщение для этого не требуется).
    Ответ написан
    2 комментария