【问题标题】:Django UserProfile slug fieldDjango UserProfile slug 字段
【发布时间】:2014-04-21 10:27:44
【问题描述】:

我正在寻找使用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.

我认为这些网址是正确的,但已将其包含在内以供参考(在名为 profile 的应用中):

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

【问题讨论】:

  • 您的 UserProfile 是否已有迁移?如果有,请出示。并提供您尝试迁移的命令行命令。

标签: django django-models slug


【解决方案1】:

这意味着您已经在userprofile 表中有一些记录,slug 字段中的值为空/空值。因为您已将该字段标记为unique=True,所以它只能有一个值为空的字段。为避免此错误,请删除 slug 字段中具有空值的记录,或者只为它们分配一个唯一的 slug,然后就可以了。

正如您从上面所了解的,在具有unique=True 的字段中使用default='' 是行不通的。唯一意味着唯一,即使'' 作为空值也被认为是唯一值,如果您有unique=True,则可以仅在一行中使用。这也意味着您不能在唯一字段中使用任何默认值。

【讨论】:

    猜你喜欢
    • 2011-07-01
    • 2013-10-11
    • 2011-08-15
    • 2016-12-22
    • 2011-09-01
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    相关资源
    最近更新 更多