Я не думаю, что это является причиной вашей ошибки, но вы пропустили populate_from
в вашем AutoSlugField
объявлении, и я не думаю, что вам нужно unique=True
:
class Post(models.Model):
"""Blog post model."""
title = models.CharField('title', max_length=120)
slug = AutoSlugField('slug', unique=True, max_length=120, primary_key=True)
... snip...
Я думаю, вы хотите:
slug = AutoSlugField(populate_from = 'title', max_length=120, primary_key=True)
Или, по крайней мере, именно так я использую AutoSlugField
в некоторых моих кодах .
Я думаю, что вы получаете ошибку, потому что django-tagging ожидает, что первичные ключи будут целыми числами, тогда как ваш первичный ключ будет строкой. Есть ли веская причина для вашей декларации primary_key=True
? Почему бы просто не использовать значение по умолчанию для автоматически добавляемого столбца id
?
Если вы хотите получить доступ к своим сообщениям, используя слаг в своих URL (что, в конце концов, и есть смысл слагов!), Тогда укажите эту запись в вашем urls.py
:
url(r'post/(?P<slug>.+)/$', single_post)
Вы хотите такой вид:
def single_post(request, slug):
post = get_object_or_404(Post, slug = slug)
...
Или вы можете использовать универсальные виды .