自Django 1.2.1起,'prepopulated_fields'在管理界面不再自动填充
从Django 1.2.1开始,'prepopulated_fields'在后台管理界面里不再自动填充了。
prepopulated_fields = {'slug': ('title',)}
这个设置在把代码上传到Django 1.2.1的服务器后似乎不管用了,因为之前是在1.1.1版本上开发的。
到底发生了什么变化呢?
我看过这个链接:http://code.djangoproject.com/wiki/NewformsAdminBranch#Changedprepopulate_fromtobedefinedintheAdminclassnotdatabasefieldclasses,但没找到解决办法,我的代码看起来没问题。
有没有什么想法?代码如下:
class Data(models.Model):
title = models.CharField(max_length=50)
slug = models.SlugField(max_length=50, unique=True, help_text='Unique value for product page URL, created from name.')
class DataAdmin(admin.ModelAdmin):
list_display = ('title', 'user', 'category')
list_filter = ('user', 'category')
ordering = ('title',)
search_fields = ('title',)
prepopulated_fields = {'slug': ('title',)}
admin.site.register(Data, DataAdmin)
3 个回答
0
我可以肯定地说,prepopulated_fields
这个功能还是按照文档中的说明正常工作的。你的代码看起来没问题,但我想到了一些可能会出错的地方:
- 可能是你的浏览器禁用了Javascript,或者你的管理媒体链接坏掉了。
- 你的字段名称中可能有拼写错误。
- 你的浏览器里可能缓存了一些东西,导致Javascript无法正常工作。
0
你有没有看过关于预填充字段的最新文档?
如果你能把你的代码展示出来就更好了,不过其实你只需要把它放在你的管理类下面,这个设置其实很简单。
3
我在把Django从1.1.1升级到1.2.1的时候遇到了这个问题。问题出在媒体文件的目录结构上,之前的路径是这样的:media/admin/js/admin,而现在变成了:admin/media/js/admin。为了修复这个问题,我在设置里把ADMIN_MEDIA_PREFIX改成了'/media/admin/'。
为了确保你在管理页面上,那个页面不会自动填充内容,你可以用firebug这个工具检查一下这个页面是从哪里加载js文件的。你会发现那个位置和Django 1.2.1中实际的js文件位置之间有差异。