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