Django UserProfile slug字段

时间:2014-03-16 06:20:32

标签: django django-models slug

我希望创建一个使用slug访问用户个人资料的网址。 IE浏览器。我想访问/profile/myname以显示我的用户个人资料。我遇到的困难是为用户模型实现slug字段。

此外,不确定这是否重要但我已经创建了UserProfile模型,该模型扩展了标准User模型,如下所示:

from django.contrib.auth.models import User
from autoslug import AutoSlugField


class UserProfile(models.Model):

  user = models.ForeignKey(User, related_name='profile_name')
  about_me = models.TextField(null=True, blank=True)
  slug = AutoSlugField(populate_from='User.username', default='', unique=True)

给出错误(尝试迁移时):

DETAIL:  Key (slug)=() is duplicated.

我认为网址是正确的,但已将其包含在参考资料中(在名为个人资料的应用中):

url(r'^(?P<slug>[\w-]+)', views.detail, name='detail')

1 个答案:

答案 0 :(得分:3)

这意味着您已在userprofile表中有一些记录slug字段中包含空/空值。由于您已将该字段标记为unique=True,因此它只能包含一个空值字段。为了避免这个错误,在slug字段中删除空值的记录,或者只为它们分配一个独特的slug,你就可以了。

正如您从上面可以理解的那样,在default=''的字段中使用unique=True将无效。唯一表示唯一,即使''为空值,也会被视为唯一值,如果您有unique=True,则只能在一行中使用。这也意味着您不能在唯一字段中拥有任何默认值。

相关问题