Python's Archiver

為方便港臺同胞閱覽,Python中國特別推出簡繁體內容轉換功能

zjxplq 发表于 2008-11-13 16:00

将apps从django 0.96迁移到1.0(二)

[b][size=3]Admin[/size][/b]
  在1.0中改变最大的是新的admin。Django管理界面(django.contirb.admin)已经完全重构了,admin定义从model定义中分离出去,框架使用django新表单处理库重写。
  所以你得重写你的class Admin定义。将class Admin分离出去,放到admin.py中去,使用admin.site.register()来注册。

[size=3]使用新的inline语法[/size]
  edit_inline移到admin.py中,例子如下:
0.96下
class Parent(models.Model):
    ...

class Child(models.Model):
    parent = models.ForeignKey(Parent, edit_inline=models.STACKED, num_in_admin=3)
1.0下
class ChildInline(admin.StackedInline):
    model = Child
    extra = 3

class ParentAdmin(admin.ModelAdmin):
    model = Parent
    inlines = [ChildInline]

admin.site.register(Parent, ParentAdmin)

[size=3]单一化fields,或使用fieldsets[/size]
  老fields语法容易混淆,虽然老语法仍然能工作。
0.96下
class ModelOne(models.Model):
    ...

    class Admin:
        fields = (
            (None, {'fields': ('foo','bar')}),
        )

class ModelTwo(models.Model):
    ...

    class Admin:
        fields = (
            ('group1', {'fields': ('foo','bar'),   'classes': 'collapse'}),
            ('group2', {'fields': ('spam','eggs'), 'classes': 'collapse wide'}),
        )
1.0下
class ModelOneAdmin(admin.ModelAdmin):
    fields = ('foo', 'bar')

class ModelTwoAdmin(admin.ModelAdmin):
    fieldsets = (
        ('group1', {'fields': ('foo','bar'),   'classes': 'collapse'}),
        ('group2', {'fields': ('spam','eggs'), 'classes': 'collapse wide'}),
    )

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.