Краткий ответ : вы не можете сохранить слаг как @property
, поскольку он не сохраняется в базе данных.
Проблема в том, что вы не можете фильтровать в базе данных сторона на слаге теперь, так как его там нет, свойство существует только на уровне Django / Python.
Поэтому слаг должен храниться в базе данных. A DetailView
создаст запрос, который ищет запись с данным слагом на стороне database . SlugField
или один из его подклассов обычно добавляет db_index=True
в поле, и, таким образом, база данных создает индекс для эффективного поиска записи.
Если вы не хотите реализовывать методы для указания слага можно использовать поле AutoSlugField
из пакета django-autoslug
. Вы устанавливаете это с:
pip3 install <b>django-autoslug</b>
в вашей виртуальной среде. Далее вы можете добавить это поле с помощью:
from autoslug import <b>AutoSlugField</b>
from django.db import models
class Province(models.Model):
name = models.CharField(max_length=30)
code = models.CharField(max_length=10)
slug = <b>AutoSlugField(populate_from='name')</b>