Mon 28 Apr 2008

Django From 0.96 update to 1.0 logging

Django升级到1.0时,发现原来写的东西就运行不起来, 去官方查了一下原来Admin和newform的API改动了, 还好这次不是大面积的改动.

更新简单记录一下.

本文主要参考: http://code.djangoproject.com/wiki/BackwardsIncompatibleChanges

admin url

URLconfs:

# OLD:
from django.conf.urls.defaults import *

urlpatterns = patterns('',
    (r'^admin/', include('django.contrib.admin.urls')),
)

# NEW:
from django.conf.urls.defaults import *
from django.contrib import admin

admin.autodiscover()

urlpatterns = patterns('',
    (r'^admin/(.*)', admin.site.root),
)

slugfield prepopulate_from

code:

# OLD
class Catalog(models.Model):
    catalog_name = models.CharField(max_length=100)
    slug = models.SlugField(prepopulate_from=("catalog_name",))

    class Admin:
        list_display = ('id', 'catalog_name', 'post_count')

# NEW
class Catalog(models.Model):
    catalog_name = models.CharField(max_length=100)
    slug = models.SlugField(db_index=True)

from django.contrib import admin
class CatalogAdmin(admin.ModelAdmin):
    list_display = ('id', 'catalog_name', 'post_count')
    prepopulated_fields = {"slug": ("catalog_name",)}

admin.site.register(Catalog, CatalogAdmin)

filter_interface

code:

# OLD
tags = models.ManyToManyField(Tag, filter_interface=models.HORIZONTAL, related_name='entries')
slug = models.SlugField(
        unique_for_date='pub_date',
        prepopulate_from=('title',),
        help_text='Automatically built from the title.'
        )
# NEW
tags = models.ManyToManyField(Tag, related_name='entries')
slug = models.SlugField(db_index=True)

class EntryAdmin(admin.ModelAdmin):
    date_hierarchy = 'pub_date'
    prepopulated_fields = {"slug": ("title",)}
    filter_horizontal = ('tags',)
admin.site.register(Entry, EntryAdmin)

Renamed 'fields' to 'fieldsets'

code:

# OLD
class Admin:
    fields = [(None, {'fields': ('title', 'catalog', 'public', 'slug', 'input_format', 'body', 'tags', 'comment_count', 'read_count')})]

# NEW
class EntryAdmin(admin.ModelAdmin):
    fieldsets = [(None, {'fields': ('title', 'catalog', 'public', 'slug', 'input_format', 'body', 'tags', 'comment_count', 'read_count')})]
admin.site.register(Entry, EntryAdmin)

更详细的变更请参考Blog-app. http://code.google.com/p/blog-app/source/detail?r=67

参考:

--EOF--

链接:

Tags: Django, web, python

进来Spamer太多,暂时关闭留言,如果有什么问题可以邮件联系。
borderj # gmail.com (Gtalk)
http://www.b0rder.com