Django中的Slug字段错误
我正在尝试将这个博客应用集成到我的网站中,但在处理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
2 个回答
1
看起来在Django中,预填充的方式已经更新了,具体可以参考这个问题:有没有简单的方法可以从CharField填充SlugField?
4
这个错误信息很明确:SlugField
这个字段不支持 prepopulate_from
这个参数。官方文档也说明了这一点,它只接受 max_length
这个参数,外加一些标准参数。要实现这个功能,应该在 管理类 中进行设置。
编辑:所以你的模型文件应该是:
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)
如果你不太明白管理网站是怎么工作的,可以参考 官方 Django 教程的第二部分。