2010-05-21 1 views
1

бегаю в ValueError, вот full traceback, конец которого:ValueError при использовании AutoSlugField и Django-тегов

Тип исключения: ValueError в/админ/блог/запись/добавить/
Exception Значение: неверный буквальное для Int() с основанием 10: 'treef'

Я использую AutoSlugField из django-command-extensions.

Я пытаюсь получить django-tagging работу, это мой models.py:

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) 
    body = models.TextField('body') 
    published = models.DateTimeField('publish', default=datetime.now) 
    category = models.ForeignKey(Category) 
    tags = TagField() 

    class Meta: 
    verbose_name = ('post') 
    verbose_name_plural = ('posts') 
    ordering = ('-published',) 
    get_latest_by = 'published' 

    def __unicode__(self): 
    return self.title 

ответ

0

Я не думаю, что это вызывает у вас ошибка, но вам не хватает 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 в some of my code.

Я думаю, что вы получаете свою ошибку, потому что 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) 
    ... 

Или вы можете использовать generic views.

+0

Да, это мой шаблон URL, чтобы добраться до одного сообщения: url (r'post/(? P . +)/$ ', Single_post), так что я бы хотел, если бы slug был основным ключом , нет ли способа обойти это? – user346816

+0

Благодарим за редактирование моего вопроса. Я запомню, что последую за этим легче читать формат дальше :) – user346816

+0

@ user346816 - Я отредактировал свой ответ на ваш комментарий. Это помогает? –

0
slug = AutoSlugField('slug', unique=True, max_length=120, primary_key=True) 

Ваш первичный ключ не является внутренним.