遇到ValueError,这里是full traceback,其结尾是:
异常类型:/ admin / blog / post / add /
的ValueError 异常值:int()的基数为10的无效文字:'treef'
我正在使用django-command-extensions中的AutoSlugField
。
我想让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 :(得分: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)
或者至少,这就是我在some of my code中使用AutoSlugField
的方式。
我认为你得到了你的错误,因为django-tagging期望主键是整数,而你的主键是一个字符串。您的primary_key=True
声明是否有充分理由?为什么不使用自动添加的id
列的默认值?
如果您想使用网址中的slug访问您的帖子(这毕竟是slu!的重点!),那么在urls.py
中给出此条目:
url(r'post/(?P<slug>.+)/$', single_post)
你想要一个这样的视图:
def single_post(request, slug):
post = get_object_or_404(Post, slug = slug)
...
或者您可以使用generic views。
答案 1 :(得分:0)
slug = AutoSlugField('slug', unique=True, max_length=120, primary_key=True)
您的主键不是int。