django中的Slug字段错误

Posted

技术标签:

【中文标题】django中的Slug字段错误【英文标题】:Slug field error in django 【发布时间】:2011-08-15 07:10:06 【问题描述】:

我正在尝试将以下 Blog 应用程序集成到我的网站,我在 slug 字段中收到以下错误,如何解决此问题

     TypeError at /login/

     __init__() got an unexpected keyword argument 'prepopulate_from'

     Request Method:   GET
     Request URL:   http://192.168.254.35/accounts/login/new_wind/
     Django Version:   1.2.1 SVN-1957
     Exception Type:   TypeError
     Exception Value:

     __init__() got an unexpected keyword argument 'prepopulate_from'

这是我的models.py

from django.db import models
from datetime import datetime

class BlogPost(models.Model):
  title = models.CharField(max_length=128)
  slug = models.SlugField(prepopulate_from=('title',))
  body = models.TextField()
  published = models.BooleanField(default=True)
  date_posted = models.DateTimeField(default=datetime.now)

def __unicode__(self):
    return self.title

class Admin:
    pass

【问题讨论】:

【参考方案1】:

错误说明了一切:SlugField 不采用关键字参数 prepopulate_from。 The docs 支持这一点 - 除了标准参数之外,它只接受参数 max_length。这应该改为in the admin class。

编辑:所以您的模型文件将是:

from django.db import models
from datetime import datetime

class BlogPost(models.Model):
  title = models.CharField(max_length=128)
  slug = models.SlugField()
  body = models.TextField()
  published = models.BooleanField(default=True)
  date_posted = models.DateTimeField(default=datetime.now)

def __unicode__(self):
    return self.title

同一应用程序的 admin.py 文件将是:

from django.contrib import admin
from myapp.models import BlogPost

class BlogPostAdmin(admin.ModelAdmin):
    prepopulated_fields = "slug": ("title",)

admin.site.register(BlogPost, BlogPostAdmin)

如果您不了解管理站点的工作原理,请参阅Part 2 of the official Django tutorial。

【讨论】:

我有 django/django/contrib/auth/admin.py 但这是什么必须在这个..【参考方案2】:

django中似乎已经更新了预填充的方式,请看这个问题:Is there an easy way to populate SlugField from CharField?

【讨论】:

我手边没有 django,但我认为 Blairs 的回答是正确的,除了 prepopulate_from=('title',) 应该被删除,如果我正确解释文档的话。

以上是关于django中的Slug字段错误的主要内容,如果未能解决你的问题,请参考以下文章

通过避免 django 模型保存方法中的完整性错误来增加 slug

姜戈。非 ascii 字段不会创建 slug。我希望得到音译,但得到一个空字段和错误

Django 自动创建 slug 和完整性错误

在 Django 中验证 slug

Django中的DetailView,关键字'slug'

Django:如果 slug 错误,则重定向 url