Пакет с наследниками класса поля модели - ForeignKey с измененной логикой валидации.
Ускоряет проведения валидации заменяя запросы к базе, на обращение в кеш
Стек:
- Django2.2]2.3
- Redis
- Должен быть установлен python3.7 глобально.
- Проект использует фреймворк
Django
- Должен быть запущен
Redis
- В проекте сконфигурирован кеш (указано в конфигурации)
Заменена логика метода is_valid
, которая по спец ключу хранит множество из PK(primary key) модели, на которую сделана связь.
Для этого класса заменяется ModelChoiceField
, на наследника у которого заменен
метод to_python
, и берет данные из базы в самый крайний случай: если нет данных в
кеше.
- Указать в
requirements.txt
зависимость от пакета:git+ssh://[email protected]/Ikudza/[email protected]#egg=django-fk-fasted
- Установить зависимость:
pip install -r requirements.txt
- Для того чтобы можно было использовать переопредленный класс
ForeingKey
, нужно:
- определить кеш в проекте(см. конфигурация пакета).
-
Для использования импортируем класс
ForeingKey
и указать его:from django.db import models from django_fk_fasted import ForeignKey class MyModel(models.Model): parent = ForeignKey( to='self', cache_time=3*60, null=True, blank=True, on_delete=models.DO_NOTHING )
-
Создать и накатить миграции:
../bin/python3 bin/manage makemigrations ../bin/python3 bin/manage migrate
В обязательном порядке, в переменной CACHES
, должен быть ключ django_fk_fasted
, по этому ключу будет получен кеш, для сохранения в него ключей для выполнения логики пакета.
Пример:
```python
'django_fk_fasted': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://localhost:6379/0',
'KEY_PREFIX': 'fk_fasted',
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
}
}
```
Ответственный за пакет разработчик - Кудашин Иван ([email protected]).